この記事ではSQL*Loaderのダイレクトモードでのロードについて解説します。
ダイレクトモードの特徴
SQL*Loaderにはダイレクトモードというモードが用意され従来型のロードよりも高速にデータをロードすることができます。
ダイレクトモードではINSERT文を使用せずに直接データブロックにデータを書き込むことによって高速なロードを実現しています。
書き込むデータブロックは空きデータブロック(HWMよりも後ろ)を使用します。
デイレクトモードでは、チェック制約、外部キー制約は無視されてロードされるので、これらの制約を使用している場合は注意が必要です。
ダイレクトモードでのロード手順
ダイレクトモードでEMP表にデータをロードします。
ロードするためにSQL*Loaderの制御ファイルを作成します。
LOAD DATA
INFILE 'emp.dat'
BADFILE 'emp.bad'
DISCARDFILE 'emp.dsc'
APPEND INTO TABLE emp
FIELDS TERMINATED BY ','
(empno,ename,job)
データファイルも用意します。
1006,Williams,Consultant
1007,Davis,Administrator
1008,Miller,Designer
1009,Wilson,Supervisor
1010,Moore,Technician
ダイレクトモードでロードします。
directパラメータをtrueにすることでダイレクトモードで実行できます。
$ sqlldr test/password@pdb2 control=emp.ctl log=emp.log direct=true
...
Path used: Direct
Load completed - logical record count 5.
Table EMP:
5 Rows successfully loaded.
Check the log file:
emp.log
for more information about the load.
正常にデータファイルの5レコードが追加されました。