- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:SQL*LOADER実行時のロードデータチェック)
SQL*LOADER実行時のロードデータチェック
このQ&Aのポイント
- SQL*Loaderの制御ファイルにどのような記述をすれば、CSVデータが5桁以上の場合にエラーを出力することができるのでしょうか?
- 現在の制御ファイルでは、CSVデータの先頭の0が取り込まれず、エラーも発生しない状況です。
- 解決策として、LPAD関数を使用してCSVデータを0埋めする方法があります。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
制御ファイルのWHEN句では < というオペレータは使えないようですね。 フィールドリストでCASE式を使ってはどうでしょうか。 No_colum "CASE WHEN LENGTH(:No_colum) < 5 THEN LPAD(:No_colum,5,'0') ELSE :No_colum END" という感じです。 桁数オーバーになるレコードはエラーになるので取込まれないと思います。
その他の回答 (1)
- nora1962
- ベストアンサー率60% (431/717)
回答No.1
LOAD DATA INTO TABLE XXX WHEN No_colum < "000000" AND No2_colum < "000000" (省略) TRUNCATE TRAILING NULLCOLS ( No_colum "LPAD(:No_colum,5,'0')" , No2_colum "LPAD(:No2_colum,5,'0')" ) でどうでしょう。
補足
ご回答ありがとうございます。 上記のSQLを実行した結果、エラーが発生します。 SQL*Loader-350: 行8に構文エラーがあります。 英数字以外の無効な文字列があります WHEN No_colum < "000000" AND No2_colum < "000000"