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 句の分岐により処理されなかったレコード。
つまり、拒否ファイルが出力されることはコントロールファイルの制御下にある警告のようなログファイルであるが、不良ファイルが出力されることはデータファイル、または、一意制約などに関わるデータの品質に由来するエラーログに近い状態であるとも言える。
最終更新:2008年04月26日 17:43