使用sqlldr向Oracle導入大的文本(txt)文件


我們有多種方法可以向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"

總結:要么左邊不能帶引號;如果有引號左右都必須為奇數個

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM