8.3 表へのデータロード

Oracleシステムでは、SQL *Loader(エスキューエルローダー)と呼ばれるユーティリティを使用して、外部ファイルに保存されている大量のデータをバッチ処理で表にロードする(取り込む)ことができる。SQL * Loaderは、SQL Developerから呼び出すことができる。

■SQL *Loaderによるデータロード

データをロードする際には、SQL *Loaderのデータファイルと制御ファイルを使用します。

データファイルとは、ロードするデータが記述されているファイルです。.csvファイルまたは、.xlsファイルなどであらかじめ作成しておきます。

制御ファイル(.ctl)とは、データファイルからデータを読み込む方法やデータの場所、データの挿入先の表名が記述されたファイルです。制御ファイルは、事前に作成して置くこともできますし、SQL Dveloperの中で自動生成することもできます。

SQL *Loaderのデータファイルと制御ファイルは、データベースのデータファイルと制御ファイルとは異なります。

■SQL *Loaderの特徴

・sqlldrコマンドで起動するコマンドライン・インタフェースである。

・外部ファイルからデータベースへデータをバルクロード(大量データの一括ロード)する。

・区切り文字、固定レコード、可変レコードおよび、ストリームなど、多数の入力形式をサポートしている。

・同時に複数の表をロードできる。

・強力なデータのフィルタ機能がある。

■データのロード方法

SQL *Loaderは、状況に応じて、従来型パス、ダイレクトパスおよび外部表の3つの異なるデータロード方法を使用する。

ロード方法説明
従来型パスデフォルトのロード方法。SQLのINSERT文が生成されて、データが表に挿入される。この方法では、その他の全てのプロセスと均等にバッファ・リソースの競合が発生するため、時間がかかる可能性がある。
ダイレクトパスダイレクトパスAPIを使用して、データをサーバのロードエンジンに渡す。ロードエンジンは、渡されたデータから配列列構造体を作成する。
この方法では、他のユーザとデータベースリソースの競合が発生しない。さらに、データブロックをフォーマットして、それを直接データベースファイルに書き込むことで、通常発生するデータ処理の大半を回避できるため、データベースのオーバーヘッドを大幅に削減できる。

通常は、ダイレクトパスの方が従来型パスよりも速くデータをロードできる。

ただし、ダイレクトパスには、いくつかの制限があるため、従来型パスを使用する必要がある場合もある。

■SQL *Loaderを使用した表へのデータロード

SQL Developerを使用して、SQL *Loaderを呼び出し、表にデータをロードするには、下記の手順を踏みます。

[1]データファイルをテキストエディがで作成します。

[2]SQL Developerで、データをロードする表を右クリックして、データのインポートを選択します。

[3]作成したデータファイルを選択して、開くボタンをクリックする。

[4]データのインポート・ウィザードページで、データファイルが読み込まれたことを確認する。

[5]データのインポート・ウィザードページで、インポート方法を選択する。

あわせて読みたい