HOME > SQL*Loader編
SQL*Loader
SQL*LoaderはOracleが提供するユーティリティで、CSV形式などのテキストファイルからデータベース内にデータを取り込むためのツールです。
データの取り込みにはデータファイルと、取込時の設定を記述した制御ファイルが必要です。
(ここで言うデータファイルと制御ファイルは、DB構成ファイルとは全く違うものです。)
<入力ファイル>
- データファイル:データベースにロードするデータファイル(CSV形式が多い)
- 制御ファイル:ロード時の設定が記述されたファイル
<出力ファイル>
- ログファイル:実行時のログが書き込まれるファイル
- 不良ファイル:ロード失敗行が書き込まれるファイル
- 廃棄ファイル:ロード時の条件に合わないデータが書き込まれるファイル
SQL*Loader使用例
制御ファイル、データファイル、実行SQLの例です。
- 制御ファイル例(pref.ctl)
- OPTIONS(LOAD=-1,SKIP=0,ERRORS=-1,ROWS=-1) LOAD DATA INFILE 'c:\pref.csv' BADFILE 'c:\pref.bad' APPEND INTO TABLE pref_mst FIELDS TERMINATED BY "," OPTIONALLY ENCLOSED BY "'" TRAILING NULLCOLS ( PREF_CODE, PREF_NAME, PREF_POPULATION )
- データファイル例(pref.csv)
- '01','北海道',5641529 '02','青森県',1450681 '03','岩手県',1394810 ...
- 実行コマンド例
- C:\>sqlldr userid=user/pass@db01 control=pref.ctl log=pref.log
SQL*Loaderのパラメータ
パラメータには制御ファイル内で指定するパラメータと、実行時のコマンドに指定するパラメータがあります。
制御ファイルのパラメータ | |
---|---|
OPTIONS |
・LOAD:ロード対象レコード行数 ・SKIP:スキップレコード行数 ・ERRORS:エラー許容数 ・ROWS:コミットをかけるタイミング (※「-1」を指定すると無限大) |
LOAD DATA | 新規ロードが開始されることを指定 |
INFILE | データファイル名を指定 (例)INFILE 'c:\pref.csv' |
BADFILE | 不良ファイル名を指定 ※不良ファイル:何らかのエラーにより、データファイルからDBに取り込めなかったデータを格納するファイル |
DISCARDFILE | 廃棄ファイル名を指定 ※廃棄ファイル:WHEN条件(3つ下の項目参照)にて弾かれたデータを格納するファイル |
INSERT APPEND REPLACE TRUNCATE ※どれかひとつ指定 |
INSERT:空の表に対するロード。空でない場合はエラー APPEND:行の追加。既存行がある場合は新しい行として追加。 REPLACE:行の置換。既存行は全てDELETEしてからロード。 TRUNCATE:行の置換。既存行をTRUNCATEしてからロード。 |
INTO TABLE | データをロードする表名 |
WHEN | ロード時のフィールドの条件。条件に一致しないものが廃棄ファイルに出力される。 |
FIELDS TERMINATED BY "," | 可変長データを区切る区切り文字 |
OPTIONALLY ENCLOSED BY '"' | オプションとしての区切り記号の指定。 |
コマンド実行時のパラメータ | |
---|---|
USERID | SQL*Loaderを実行するID/PW (例)userid=user/pass@db01 |
CONTROL | 制御ファイル名を指定する (例)control=pref.ctl |
DATA | データファイル名を指定する (例)data=pref.csv |
PARFILE | パラメータファイル (パラメータを記載したファイルを指定する) (例)parfile=par.txt |
LOG | 実行時のログを出力するファイル名を指定する (例)log=pref.log |
BAD | ロード失敗行を出力するファイルを指定する |
DISCARD | 廃棄ファイル名を指定する |
DISCARDMAX | 廃棄する最大レコード数 |
ERRORS | 許容されるエラーの最大レコード数 |
DIRECT=TRUE | ダイレクトパスロードで実行することを指定 |
PARALLEL=TRUE | パラレルダイレクトパスロードで実行することを指定 |
SKIP | 読み飛ばす行数(デフォルト=0) ※データファイルの1行目がタイトルの場合は1を指定 |
LOAD | ロードするレコード数(デフォルト=全て) |
ROWS | 配列レコード数 |
BINDSIZE | 配列バッファのサイズ |
SQL*Loaderの戻り値
sqlldrコマンドを実行した時の戻り値は以下の通りです。
戻り値 | 分類 | 意味 |
---|---|---|
0 | SUCCESS | すべてのデータが正常にロードされた |
1 | FAIL | コマンドや制御ファイル不正 |
2 | WARNING | 全てまたは一部のデータのロードが失敗した |
3 | FATAL | OS関連のエラー ※UNIX系OSの場合 |
4 | FATAL | OS関連のエラー ※Windows系OSの場合 |
0以外のコードが返った場合の詳細は、ログファイルをご確認ください。