Oracle SQL*Loader を使用して、別のデータベースの可変長文字列 (lob) であった列を Oracle の varchar2(4000) 列にロードしようとしています。4000 文字をはるかに超える文字列がありますが、移行時にこれらの文字列を切り詰めることができ、切り捨てられるべきであることに全員が同意しました (4000 文字を超えるデータを調べましたが、意味がありません)。そのために、制御ファイルで次のように列を指定しました。
COMMENTS CHAR(65535) "SUBSTR(:COMMENTS, 1, 4000)",
ただし、SQL*Loader は、データ ファイル内でこのレコードが 4000 文字を超える行を引き続き拒否します。
レコード 6484: 拒否 - 表 LOG_COMMENT、列 COMMENTS のエラー。ORA-12899: 列COMMENTSの値が大きすぎます(実際: 11477、最大: 4000)
レコード 31994: 拒否 - 表 LOG_COMMENT、列 COMMENTS のエラー。ORA-12899: 列COMMENTSの値が大きすぎます(実際: 16212、最大: 4000)
レコード 44063: 拒否 - 表 LOG_COMMENT、列 COMMENTS でエラー。ORA-12899: 列COMMENTSの値が大きすぎます(実際: 62433、最大: 4000)
はるかに小さい部分文字列を取得しようとしましたが、それでも同じエラーが発生しました。制御ファイルを変更して、4000 文字を超える文字列データを切り捨てて varchar2(4000) 列にする方法を教えてください。