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]データのインポート・ウィザードページで、インポート方法を選択する。