sqlldr使用

xiayulai發表於2008-07-15

sqlldr 使用:
sqlldr是oracle提供的一個比較好用的平面檔案資料倒入工具,可以倒入帶有格式的資料等比較規範的文字檔案。
載入方式有:傳統路徑(conventional path),利用sql插入為我們載入的資料和直接路徑(direct path)。
必需要有一個 資料檔案和一個控制檔案,日誌檔案可選(不指定的話,會自動生成的)。
資料檔案的分隔符需要指定合適,否則會出現混亂。控制檔案是告訴sqlldr資料檔案和表的對應關係以及一些處理規則

命令:
Sqlldr control=loader.ctl log=loade.log bad=loader.bad

Sqlldr 這個是應用程式的命令,pr_tmp 表對應的user,control控制檔案,log日誌,bad不合法的資料。


loader.ctl例子:
load data
infile 'd:/pr.csv' "str X'78696179756C61690D0A'"
into table pr_tmp
fields terminated by "," OPTIONALLY ENCLOSED BY '"' TRAILING NULLCOLS
(ID char(256) ,MID char(256),SUBT char(256),KS char(512),DES char(4000),SY char(256),CM char(256),PC char(512),EID char(256),OD char(256));

其中 "str X'78696179756C61690D0A'" 是指定以什麼樣的符號作為結束的。78696179756C61690D0A 這串字元的生成方式:
select utl_raw.cast_to_raw('xiayulai'||chr(13)||chr(10)) from dual;意思是以xiayulai加回車換行結束。這裡要注意,xiayulai||chr(13)||chr(10)並不能被load到資料庫中去。
這樣就可以處理換行但是並不是一條記錄的結束的平面檔案,也就是有回車格式的檔案。
fields terminated by "," 這個是指每個欄位的結束符,OPTIONALLY ENCLOSED BY '"' 表示""之間的是一個欄位,
但是如果不指定換行符又遇到換行符時會錯。
TRAILING NULLCOLS 是指定空的單元格用null填充。
控制檔案中MID char(256) 的長度預設是256,如果需要指定的話,可以如上指定,但是最好是指定的長一點,因為平面檔案中經常會出現一些比較長的欄位,
先賢倒入資料庫再說,否則報錯就不好了。
預設是insert ,可以是append,replace.

execl 檔案先另存為以逗號為間隔的csv檔案。

看了大師的帖子才明白。。。。。

[@more@]

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

相關文章