文字檔案的資料裝載工具sqlldr

dotaddjj發表於2011-07-25

--sqlldr使用簡單說明 oracle中要把txt檔案或者csv檔案的資料匯入到資料庫表中,此時需要使用oracle一個自帶的sqlldr工具。
此時有test.txt檔案
1,2,3
2,3,5
3,5,6
需要把txt的檔案裝載到oracle中的test_sqlldr表中
此時我們優先建立一個測試用表test_sqlldr
create table test_sqlldr(
id_1 number,
id_2 number,
id_3 number);

然後需要填寫控制檔案test.ctl,這個也是sqlldr工具使用最重要的部門
load data
infile "d:test.txt"
append into table test_sqlldr
fields terminated by ','
trailing nullcols --txt
(id_1,id_2 ,id_3)
ctl檔案填寫完成
load data --裝載資料
infile --目標文字txt檔案或者csv檔案的物理位置
append into table --追加的方式append為在原來的表中繼續新增資料,insert為預設選項裝載空表,如果原來有資料則操作會暫停,replace和truncate都是刪除原來資料然後插入,但是其中的replace是利用oracle的delete來刪除資料,需要寫入undo log資訊,truncate則是直接截斷table,不會寫入關於此資料的undo log,但是因為會產生重做日誌,oracle還是會產生維護重做日誌的undo log。*/
fields terminated by ','--txt或者csv檔案資料中的分隔符, fields terminated by whitespace則是指定空格為分隔符等
或者csv檔案中缺少資料則預設為null
(id_1,id_2 ,id_3) --test_sqlldr的每個column_name
控制檔案填寫完畢後則在os命令模式下
sqlldr control=d:test.ctl log=d:test.log
其中的control是控制檔案的物理位置,log則是記錄的sqlldr裝載資料的日誌。
可能有時候我們只需要裝載表中的部分column資訊,比如此時我們只需要狀態id_1和id_3的資訊,id_2的資訊不予以裝載,可以把ctl檔案中的最後的(id_1,id_2,id_3)中載入一個引數filler改成(id_1,id_2 filler,id_3)即可,這裡用到了filler引數掠去了不需要裝載的column_name。
當然sqlldr還有很多引數可以靈活運用,可以在os下直接sqlldr檢視具體的引數的資訊,當然有些引數還是需要自己使用來總結。

[@more@]

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

相關文章