SQL*Loaderのダイレクトモードでのロード

この記事では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レコードが追加されました。