Oracle數(shù)據(jù)提到文本文檔進(jìn)行查詢的方法
在數(shù)據(jù)庫中我運(yùn)行了以下的查詢語句:
Select PLAN_ID, EL_ID, NIIN, ITEM_NAME, PROJECT_CD,
CASE WHEN LCMC_DOC_NO IS NULL THEN MRODOC ELSE LCMC_DOC_NO END AS "DOCUMENT NUMBER"
FROM EQLIST_VIEW
WHERE PLAN_ID IN (736,1011)
AND LCMC_DOC_NO IN ('W56HZV0327W501','W52H090313X006','W52H090314X026',
'W52H090314X027','W52H090318X049','W52H090320X003','W56HZV0351M012',
'W56HZV0351M032','W56HZV0351M035','W919AD0334L091','W919AD0334L092',
'W919AD0352L025','W919AD0358L012','W919AD0358L017','W919AD0353L020',
'W56HZV0350M001')
ORDER BY NIIN, “DOCUMENT NUMBER”
問題是這樣的,現(xiàn)在有超過4000個DOC_NO,我想要抽取這些數(shù)據(jù)放到C盤上的一個文本文件當(dāng)中。我試了好幾種方法,但是系統(tǒng)一直出現(xiàn)第五行錯誤提示:“Syntax error near 'C'”
于是我重新寫了一邊查詢:
Select PLAN_ID, EL_ID, NIIN, ITEM_NAME, PROJECT_CD,
CASE WHEN LCMC_DOC_NO IS NULL THEN MRODOC ELSE LCMC_DOC_NO END AS "DOCUMENT NUMBER"
FROM EQLIST_VIEW
WHERE PLAN_ID IN (736,1011)
AND LCMC_DOC_NO IN C:/Users/aj.moon/Desktop/TEMP/A5A_DOCNUM.TXT
能否提供一些好的建議?
答:你并沒有說你在使用哪一個版本的Oracle數(shù)據(jù)庫,那么我就先假設(shè)為Oracle 9i。第一個問題是你不能直接使用文本文件,首先你要做的是讓這些數(shù)據(jù)在數(shù)據(jù)庫內(nèi)可用。你可以使用SQL*Loader來加載數(shù)據(jù)或者創(chuàng)建一個外部的表。在這里我就簡單介紹一下第二種方法。
外部表可以允許Oracle查詢存儲在數(shù)據(jù)庫之外的平面文件中的數(shù)據(jù)。SQL*Loader加載的格式化存儲數(shù)據(jù)你都可以訪問。針對外部表,你無法使用INSERT/UPDATE/DELETE操作,但是你可以在查詢中使用它們。一旦你創(chuàng)建了外部表,你就可以在視圖中使用它,并創(chuàng)建synonyms。通常情況下,使用外部表主要是為了進(jìn)行ETL操作,它可以防止數(shù)據(jù)進(jìn)入真實(shí)表。但是如果你打算頻繁地查詢外部表,就需要考慮將數(shù)據(jù)加載到真實(shí)表當(dāng)中,因?yàn)橥獠勘頍o法進(jìn)行索引,性能將會受到比較大的影響。
【編輯推薦】