我們有多種方法可以向Oracle數據庫里導入文本文件,但如果導入的文本文件過大,例如5G,10G的文本文件,有些方法就不盡如意了,例如PLSQL Developer中的導入文本功能,如果文本文件過大,不僅導入速度太慢,中間還容易出錯。這時Sqlldr就能大顯身手了,Sqlldr可以每秒向Oracle插入5W條數據,可以自定義控制文件,進行導入控制,而且導入過程不易出錯,下面簡易記錄導入過程。
1.Sqlldr導入控制文件說明
1 load data 2 infile '/home/oracle/42.txt' //文本文件的絕對位置 3 append into table doupoidx //要導入的表名稱 4 fields terminated by ',' //分隔符定義,這里是逗號 5 OPTIONALLY ENCLOSED BY '"' //過濾"號 6 TRAILING NULLCOLS //對應字段的順序。 7 ( 8 time TimeStamp 'yyyy-mm-dd hh24:mi:ss', 9 price, 10 volume, 11 interest 12 )
2.在Oracle用戶下執行導入命令
sqlldr userid=scott/oracle@orcl control =/home/oracle/input.ctl //用戶名/密碼@實例名 control=控制文件的位置
關於 optionally enclosed by 的小測試
左邊沒引號右邊有引號:成功,原樣導入
111"
222""
333"""
左邊有引號右邊沒引號:失敗, second enclosure string not present
"44
""555
"""666
左右有相等的奇數個引號,成功,引號數=2n+1時導入數據帶有n個引號
"777"
"""888"""
左右有相等的偶數個引號,失敗, no terminator found after TERMINATED and ENCLOSED field
""999""
""""AAA""""
一邊奇數一邊偶數:失敗, 錯誤信息為上述兩種
"BBB""
""CCC"
"""DDD""
""EEE"""
兩邊不等的偶數:失敗, no terminator found after TERMINATED and ENCLOSED field
""FFF""""
""""GGG""
兩邊不等的奇數:成功,引號數=2n+1時導入數據帶有n個引號
"HHH"""
"""III"
總結:要么左邊不能帶引號;如果有引號左右都必須為奇數個