(Oracle)SQL*Loaderで大量データを投入する方法
テスト環境などに大量データを仕込むときに行う方法。
数百、数千件であればObject BrowserやDMLを使用したほうが楽ですが、
UNDO表領域を使用するため百万件のような大量データを仕込む場合はSQL*Loaderを使用したほうがお勧め。
SQL*LoaderではUNDO表領域を使用しないで直接データを書き込むため、
何百万件のデータも数分で登録することができる。
DB環境
Oracle
準備に必要なもの
- CTLファイル
- DATファイル(CSVファイルも可)
CTLファイル
テーブルの情報を記載したファイル。
大量データを登録するテーブルの情報。
※"INFILE"で登録対象のDATファイルを指定。
LOAD DATA
INFILE 'MY_TABLE.DAT'
APPEND
INTO TABLE MY_SCHEMA.MY_TABLE
FILEDS TERMINATED BY ","
TRAILING NULLCOLS
(
"COLUMN1",
"COLUMN2",
"COLUMN3",
"COLUMN4" DATE "yyyy/mm/dd hh24:mi:ss"
)
DATファイル
DATファイルには実際に登録するデータを記載する。
データはカンマ区切りのためCSVファイルでも可能。
DATA1-1,DATA1-2,DATA1-3,2021/12/11 09:11:54
DATA2-1,DATA2-2,DATA2-3,2021/12/11 09:11:54
DATA3-1,DATA3-2,DATA3-3,2021/12/11 09:11:54
実行方法
CTLファイルとDATファイルを用意したら
以下コマンドを実行する。
※今回はCTLファイルとDATファイルをカレントディレクトリに用意しています。
sqlldr userid=SchemaID/schemaPW@10.11.11.11:1020/schema control=MY_TABLE.CTL log=MY_TABLE.LOG
- userid=SchemaID/schemaPW@10.11.11.11:1020/schema
DBの接続情報 - control=MY_TABLE.CTL
事前に準備したCTLファイル - log=MY_TABLE.LOG
実行結果