SQL*lorderエラー対応(データファイルのフィールドが最大長を超えています)
2014/10/18
こちらも「覚書」
データ移行を行っている最中、大量データをローダーで移行しようとしたらエラーとなった。
データの中身見てみたら、囲み文字(“)の中に区切り文字(,)が入ってたので、そこで勝手に区切られちゃってエラーになってるのかなーと思いましたが違うみたい。
逆はありえますけど、囲み文字(“)内は1つのデータとしてみてくれるはず。
逆はすげー面倒みたいですけどね・・・
じゃ、なんだろう?と調べてみたら、情けない結果w
SQL*Loaderの仕様で、文字列の最大項目長は「256バイト」となっている。
このため、256バイト以上の文字列を含むデータは、フィールド最大長を超えるエラーが発生。
なんでこうなったか?
ローダーのCTLファイル作成に手を抜いたからwww
1から書くの面倒くさくて、「ObjectBrowser」でチョチョイと作ってもらって、そのまま利用してたのでデフォルト設定のまま使ってしまっていました。
対応策としては、CTLファイル内の項目指定部分に項目長を指定してあげればOK。
(
“FIELD_01”,
“FIELD_02” char(2048)
)
楽するのはいいけど、チェックは必要ですね。
甘かった。。。