• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:SQL*LOADER実行時のロードデータチェック)

SQL*LOADER実行時のロードデータチェック

このQ&Aのポイント
  • SQL*Loaderの制御ファイルにどのような記述をすれば、CSVデータが5桁以上の場合にエラーを出力することができるのでしょうか?
  • 現在の制御ファイルでは、CSVデータの先頭の0が取り込まれず、エラーも発生しない状況です。
  • 解決策として、LPAD関数を使用してCSVデータを0埋めする方法があります。

質問者が選んだベストアンサー

  • ベストアンサー
  • yamada_g
  • ベストアンサー率68% (258/374)
回答No.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')" ) でどうでしょう。

neetplease
質問者

補足

ご回答ありがとうございます。 上記のSQLを実行した結果、エラーが発生します。 SQL*Loader-350: 行8に構文エラーがあります。 英数字以外の無効な文字列があります WHEN No_colum < "000000" AND No2_colum < "000000"

関連するQ&A