ORACLE 的載入工具SQLLDR應用

itpub120發表於2007-01-23

SQLLDR包括三個檔案:控制檔案,資料檔案,日誌檔案;

日誌檔案包括三種:錯誤日誌檔案(*.bad),丟棄日誌檔案(*.dsc);常規日誌檔案(*.log)

[@more@]

建立一個表;

create table TEST
(
BM NUMBER(8),
BMMC VARCHAR2(20),
SJBM NUMBER(8)
);

資料檔案mmr.txt:

13213,aaa,333

12345,bbb,555

12345,ddd,888

建立一個批處理檔案do.bat

sqlldr control=do.ctl log=D:loaddatalog22.txt;


方法一:在控制檔案中直接載入資料;

建立控制檔案loaddata.ctl

Load data

infile *

replace into table test

fields terminated by ','

optionally enclosed by ‘’’’

trailing nullcols

(bm ,bmmc ,sjbm )

begindata

13213,aaa,333

12345,bbb,”555”

12345,ddd,888

執行do.bat檔案,就可以了載入成功了;optionally enclosed by ‘”’可以去除”555”的雙引號;trailing nullcols指沒有的資料用NULL填充;


方法二:透過資料檔案載入;

建立控制檔案loaddata.ctl

Load data

infile 'd:loaddatammr.txt'

replace into table test

fields terminated by ','

(bm ,bmmc,sjbm )

執行do.bat就可以完成載入;


方法三:將一個資料檔案同時載入到多個資料表中;

建立控制檔案loaddata.ctl

Load data

infile 'd:loaddatammr.txt'

replace into table test

(

bm position(1:5),

bmmc position(*+1:9),

sjbm position(*+1:13)

)

into table testmmr

(

bm position(1:5),

bmmc position(*+1:9),

sjbm position(*+1:13)

)

執行do.bat就可以完成載入;為了裝載固定的定位資料,這裡必須使用position關鍵字;不能用關鍵子terminated,不然不能成功; position(*+1:9)是相對位置,等於position(5+1:9),相對於上一列的結束位置加一,同時注意;position關鍵字的結束位置必須是該資料結束的絕對列位置;


方法四:有選擇條件的多表匯入:

建立控制檔案loaddata.ctl

Load data

infile 'd:loaddatammr.txt'

replace into table test

when bm = '13213'

(

bm position(1:5),

bmmc position(*+1:9),

sjbm position(*+1:13)

)

when bm =’12345’

into table testmmr

(

bm position(1:5),

bmmc position(*+1:9),

sjbm position(*+1:13)

)


控制檔案中的關鍵字replace,insert,append分別代表替換原資料,插入新資料;增加新資料;

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8109090/viewspace-892815/,如需轉載,請註明出處,否則將追究法律責任。

相關文章