今天用sqlldr匯入資料時候報錯:
” Record 1: Rejected – Error on table ks_test, column khname.
Field in data file exceeds maximum length “
看到這個錯誤後以為是欄位值過小導致,將原來的varchar2(1000) 改到了varchar2(2000)
發現還是不可以,依舊報如上錯誤,於是懷疑是sqlldr自身存在某些限制了。
查了下,發現果然如此。
原來表中定義的欄位REFUSE_REASON 雖然是VARCHAR2(1000);
但是用控制檔案(CTL)中預設為是char型別。
所以,當該列資料長度超過255(char型別長度)時會提示出錯。
解決辦法:
將CTL檔案中的 “REFUSE_REASON” 改為 “REFUSE_REASON char(2000)” 即可!
注意是 char 型別 而不是 varchar型別!