ORACLE/SQL*Loader編

オラクルちょこっとリファレンス

HOME > SQL*Loader編

SQL*Loader

SQL*LoaderはOracleが提供するユーティリティで、CSV形式などのテキストファイルからデータベース内にデータを取り込むためのツールです。

データの取り込みにはデータファイルと、取込時の設定を記述した制御ファイルが必要です。
(ここで言うデータファイルと制御ファイルは、DB構成ファイルとは全く違うものです。)

SQL*Loader概要図

<入力ファイル>

  • データファイル:データベースにロードするデータファイル(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以外のコードが返った場合の詳細は、ログファイルをご確認ください。

ToTop