非常に大きなファイル(毎日1億2000万レコード)をロードするために使用する制御ファイルの例を示します。
OPTIONS (SKIP=0, ERRORS=500, PARALLEL=TRUE, MULTITHREADING=TRUE, DIRECT=TRUE, SILENT=(ALL))
UNRECOVERABLE
LOAD DATA
CHARACTERSET WE8ISO8859P1
INFILE '/path_to_your_file/name_of_the_file.txt'
BADFILE '/path_to_your_file/name_of_the_file.bad'
DISCARDFILE '/path_to_your_file/name_of_the_file.dsc'
APPEND
INTO TABLE yourtablename
TRAILING NULLCOLS
(
COLUMN1 POSITION(1:4) CHAR
,COLUMN2 POSITION(5:8) CHAR
,COLUMN3 POSITION(9:11) CHAR
,COLUMN4 POSITION(12:18) CHAR
....
....)
いくつかの考慮事項
- 区切り文字を使用するよりも、位置による読み込みが常に高速です
-
PARALLEL
のオプションを使用します 、MULTITHREADING
およびDIRECT
読み込みパフォーマンスを最適化するため。 UNRECOVERABLE
データベースを回復する必要がある場合に備えて、常にファイルがある場合は、データを再度ロードする必要がある場合にも、良いアドバイスです。- 適切な文字セットを使用してください。
- TRAILING NULLCOLS句は、レコードに存在しない相対位置の列をnull列として扱うようにSQL*Loaderに指示します。
- 位置とは、各行に区切り文字のないデータが含まれていることを意味します。したがって、テーブル内の各フィールドの位置は長さでわかります。
AAAAABBBBBBCCCCC19828733UUUU
- txtファイルまたはcsvファイルにフィールド区切り文字(セミコロンなど)がある場合は、
FIELDS DELIMITED BY
を使用する必要があります。
これは、制御ファイル(通常は拡張子がctlのテキストファイル)に保存されます。次に、コマンドラインから呼び出します
sqlldr userid=youuser/[email protected]_string control=/path_to_control_file/control_file.ctl