現在有一個需求,就是從txt檔案中讀資料(百萬級)并快速插入到 oracle中,因此想使用sqlldr。遇到的問題是:通過windows的命令列執行sqlldr 時,正常運行結束,log 顯示資料全部加載成功,沒有報錯,而且也沒有生成 bad 檔案,可是實際插入到資料庫中的記錄數總是比原始資料少。比如原始資料100000條,插入庫后只有99977。原始資料1792327,插入后只有1792208。
想了很久也不知道原因在哪里,請遇到過的前輩們指教。
----------------------------------------------------------------------------------
(1) sqlldr命令: sqlldr userid=test/test123@ccs control='D:/aa.ctl' errors=100000 log='D:/aa.log'
(2) aa.ctl:
load data
infile 'D:/bb.txt'
badfile 'D:/bb.bad'
discardfile 'D:/bb.dsc'
append into table a001
fields terminated by '|'
trailing nullcols
(
a001_id,
a001_type,
a001_datetime,
a001_jrnl,
a001_mid,
a001_amount,
a001_cardno,
a001_summary,
a001_result,
a001_temp1,
a001_temp2
)
(3) 原始資料格式示例:00|0|20170603260183|woen2afe21faw234aegg|927986916|29|86916491824686759|
uj5u.com熱心網友回復:
對比一下原始資料, 看看漏掉了哪些? 再看看這些資料有什么問題uj5u.com熱心網友回復:
用二分法,一半一半的洗掉資料,看看這些行,有什么不同。這個情況不應該發生。
uj5u.com熱心網友回復:
是否存在空行?uj5u.com熱心網友回復:
看表是不是建立主鍵,文本檔案有重復的資料。另外看下匯入的日志uj5u.com熱心網友回復:
errors 等于0 看,報錯不。 懷疑分割符有問題uj5u.com熱心網友回復:
同意#5的情況。估計是分隔符的問題,導致幾行合并到了1行。。你可以先看下資料庫里欄位內容長度有沒有例外的,以此定位到文本中大概的內容上,檢查內容。轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/57113.html
標籤:開發
上一篇:系統重裝,Oracle資料恢復
