SQL*Loderの取込モード

・INSERT
 ロードするテーブルが空の場合に、テーブルにロードされます。
 データがロード先のテーブルに存在してた場合、ロードされません。
 ロードタイプを指定しない場合も、デフォルトはINSERTになります。

・APPEND
 ロード先のテーブルにデータが存在する/しないに関わらず、ロードします。
 パラレル実行の場合には、APPEND モードしか利用できない。

・REPLACE
 ロード先のテーブルにデータが存在してる場合、削除してから、ロードします。
 重複データの置き換えではなく、全レコードの DELETE を行ってからローディング処理を行なう。
 エラー発生時は、ロールバックしますが大量データロード時には時間が掛かります。
 TIPS: ステージング領域(中間テーブル)無しにレコードデータの置換処理をしたい場合には、外部表と MERGE を使用する。

・TRUNCATE
 ロード先のテーブルにデータが存在してる場合、削除してから、ロードします。
 エラー発生時は、lロールバックしませんが、大量データをロードする時の速度は
 REPLACEに比べると格段に早くなります。
 テーブルへの DELETE 権限では、この設定は利用することができない点に注意する。
 ORA-01031: 権限が不足しています。 のエラーになる
 (TRUNCATE TABLE には DROP TABLE 権限が必要)

SQL*Loaderの終了コード
結果 終了コード
すべての列が正常にロードされた EX_SUCC
すべての行または一部の行が拒否された EX_WARN
すべての行または一部の行が拒否された EX_WARN
ロードが中断された EX_WARN
コマンドラインまたは構文エラー EX_FAIL
SQL*Loaderに対してリカバリ不能なOracleエラー EX_FAIL
OS関連エラー(ファイルのオープン/クローズ、mallocなど) EX_FAIL

UNIXの終了コード   Windows NTの終了コード
EX_SUCC  0     EX_SUCC  0
EX_FAIL  1     EX_WARN  2
EX_WARN  2     EX_FAIL  3
EX_FTL  3     EX_FTL  4

不良ファイルと拒否ファイル
 不良ファイル (badfile)  入力データを Oracle にインサートしようとしてできないデータが出力される。ダイレクトパス か 従来型パスかによって変化するがデータフォーマットの不一致、制約違反、型変換の失敗。

 拒否ファイル (discard)  コントロールファイル内で処理されなかったデータが出力される。コントロールファイル内の WHEN 句の分岐により処理されなかったレコード。

 つまり、拒否ファイルが出力されることはコントロールファイルの制御下にある警告のようなログファイルであるが、不良ファイルが出力されることはデータファイル、または、一意制約などに関わるデータの品質に由来するエラーログに近い状態であるとも言える。

「データ・ファイルのフィールドが最大長を超えています。」
http://monjyu.biz/developer/bd3/bg12/msg/503.html

タグ:

+ タグ編集
  • タグ:
最終更新:2008年04月26日 17:43