1. ホーム
  2. データベース

Oracle インポートエラー: データファイルのフィールドが最大長を超えています。

2022-03-18 18:42:10
本日、sqlldrでデータをインポートしたところ、以下のエラーが発生しました。

レコード 1: 拒否 - テーブル ks_test、列 khname でエラーが発生しました。



データファイルのフィールドが最大長を超えました。

このエラーを見て、フィールドの値が小さすぎると思い、varchar2(1000)からvarchar2(2000)に変更したところ

それでもうまくいかず、やはり上記と同じエラーが出ることがわかったので、sqlldr自体に何らかの制限があるのではと推測しています。

調べてみると、そのようなことがありました。

テーブルに定義されているREFUSE_REASONというフィールドはVARCHAR2(1000)であることが判明していますが。

        しかし、CTLのデフォルトはcharです。

        そのため、カラムのデータ長が255(char型の長さ)を超えるとエラーになります。

回避策

      CTLファイルの "REFUSE_REASON"。 から  "REFUSE_REASON char(2000)" で終わりです。

char 型で varchar 型でないことに注意してください!