HOME > SQL*Loader編
SQL*Loader
Update:2010/04/17
SQL*LoaderはOracleが提供するユーティリティで、CSV形式などのテキストファイルからデータベース内にデータを取り込むためのツールです。
データの取り込みにはCSV形式などのデータファイルと、取り込む時の設定を記述した制御ファイルが必要です。
(ここで言うデータファイルと制御ファイルは、データベース構成ファイルとは全く違うものです。)

<入力ファイル>
- データファイル:データベースにロードするデータファイル(CSV形式が多い)
- 制御ファイル:ロード時の設定が記述されたファイル
<出力ファイル>
- ログファイル:実行時のログが書き込まれるファイル
- 不良ファイル:ロード失敗行が書き込まれるファイル
- 廃棄ファイル:ロード時の条件に合わないデータが書き込まれるファイル
| 制御ファイル例(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 ... |
実行コマンド例 |
|
SQL*Loaderのパラメータ
パラメータには制御ファイル内で指定するパラメータと、実行時のコマンドに指定するパラメータがあります。
| 制御ファイルのパラメータ | |
|---|---|
| OPTIONS |
・LOAD:ロード対象レコード行数 ・SKIP:スキップレコード行数 ・ERRORS:エラー許容数 ・ROWS:コミットをかけるタイミング (※「-1」を指定すると無限大) |
| LOAD DATA | 新規ロードが開始されることを指定 |
| INFILE | データファイル名を指定 |
| BADFILE | 不良ファイル名を指定 ※不良ファイル:何らかのエラーにより、データファイルからDBに取り込めなかったデータを格納するファイル |
| DISCARDFILE | 廃棄ファイル名を指定 ※廃棄ファイル:WHEN条件(3つ下の項目参照)にて弾かれたデータを格納するファイル |
|
INSERT APPEND REPLACE DELETE 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) |
| LOAD | ロードするレコード数(デフォルト=全て) |
| ROWS | 配列レコード数 |
| BINDSIZE | 配列バッファのサイズ |

実行コマンド例