SQL*Loader エクスプレスモードとは

2016.07.20

こんにちは! YDCの ろっきー です。
今回はOracle12c から登場したSQL*Loaderのエクスプレスモードをご紹介します。

そもそも、SQL*Loaderはご存知でしょうか。
SQL*Loaderは、外部ファイル(CSV,Textなど)のデータをOracle Databaseの表に取り込む
ユーティリティで、Oracle Databaseに標準で付属しています。
SQL*Loaderを使うことで、様々なデータを高速かつ柔軟にデータベースにロードすることが可能と
なります。しかし実行時には制御ファイルの作成が必要となり、その準備が難しいと感じる場合も
あったかと思います。

SQL*Loaderのエクスプレスモードでは、制御ファイルを作成する必要はありません。
デフォルトで設定されたフォーマットに即したデータを用意することで、制御ファイルを作成することなくロードが可能となっています。

従来のSQL*Loader

1. サンプルのテーブルを作成します。

SQL>create table sample1
  2 (col1 number(10) not null,
  3 col2 varchar2(10));

2. 外部ファイルを作成します。
(ファイル名:C:\SQLLDR\sample1.csv)

1,TOKYO
2,OOSAKA
3,SAPPORO
4,FUKUOKA
5,NAGOYA

3. 制御ファイルを作成します。

LOAD DATA
INFILE 'C:\SQLLDR\SAMPLE1.CTL'
INTO TABLE SAMPLE1
APPEND
FILEDS TERMINATED BY ','
(col1,col2)

4. SQL*Loaderコマンドを実行します。

sqlldr userid=scott/tiger control=C:\SQLLDR\sample1.ctl log=C:\SQLLDR\sample1.log

oracle_1_1.jpg

5. データの確認を行います。

SQL>select * from sample1;

oracle_1_2.jpg

作成した外部ファイルのデータが、sample1テーブルにロードされていることが確認できました。
次にOracle12cから登場したSQL*Loaderのエクスプレスモードを試してみましょう。

SQL*Loaderのエクスプレスモード

1. サンプルのテーブルを作成します。

SQL>create table sample2
  2 (col1 number(10) not null
  3 col2 vvarchar2(10));

2. 外部ファイルを作成します。
(ファイル名:C:\SQLLDR\sample2.dat)

1,TOKYO
2,OOSAKA
3,SAPPORO
4,FUKUOKA
5,NAGOYA

3. SQL*Loaderコマンドを実行します。

sqlldr scott/tiger table=sample2

oracle_1_3.jpg

4. データの確認を行います。

SQL>select * from sample2;

oracle_1_4.jpg

作成した外部ファイルのデータが、sample2テーブルにロードされていることが確認できました。

SQL*Loaderのエクスプレスモードの場合、最低限tableパラメータの指定のみでデータのロードが
可能です。tableパラメータのみを指定した場合、他の複数のパラメータはデフォルト値が使用されますが、
ほとんどのデフォルト値はコマンドラインで追加パラメータを指定して上書きできます。

SQL*Loaderコマンド実行時の定義(制御ファイル)の内容は、実行ログから確認できます。
今回は以下の定義でデータがロードされました。

oracle_1_5.jpg

さらにログを読み進めると、外部表を作成し、SQL文(INSERT AS SELECT文)を使用してロードを実行していることも確認出来ます。

oracle_1_6.jpg oracle_1_7.jpg

Oracle12cから登場したエクスプレスモードはいかがだったでしょうか。以前従来のSQL*Loaderで
データのロードを試したけど制御ファイルの設定で挫折したという方も、ぜひ一度エクスプレスモードを
お試しください。

Standby Expressに関するお問合わせ

  • TEL 042-333-6217
  • FAX 042-352-6101
  • LINE
  • Mail