7.1 SQL*Loaderの機能
SQL*Loaderにより、外部ファイルからOracle Databaseの表にデータがロードされます。
SQL*Loaderの強力なデータ解析エンジンによって、あらゆるデータ形式のデータファイルに対応できます。SQL*Loaderを使用して、次のことが可能です。
- データ・ファイルがデータベースと異なるシステム上にある場合のネットワークを介したデータのロード。
- 同一のロード・セッションでの複数のデータ・ファイルからのデータのロード。
- 同一のロード・セッションでの複数の表へのデータのロード。
- 自動パラレル・ロード(ダイレクト・パス・ロードと従来型パス・ロードのどちらでも可)を使用した複数の大きい表(単一表とシャード表のどちらでも可)からのデータのロード。
- データの文字セットの指定。
- ロード・データの選択(レコード値に基づいたロード)。
- ロード前の、SQL関数を使用したデータ処理。
- 指定した列に対する、一意の順序キーの生成。
- オペレーティング・システムのファイル・システムを使用したデータ・ファイルへのアクセス。
- ディスク、テープまたはNamed Pipeからのデータのロード。
- 高度なエラー・レポートの生成による、トラブルシューティングの支援。
- 複合オブジェクト・リレーショナル・データの任意のロード。
- セカンダリ・データ・ファイルを使用した、ラージ・オブジェクト(LOB)およびコレクションのロード。
- 従来型ロード、ダイレクト・パス・ロードまたは外部表ロードの使用。
LOBは、Oracle Database内部に大量のデータを保持するために使用されます。SQL*Loaderおよび外部表ではLOBFILEが使用されます。LOB用のデータは非常に大きくなり、SQL*Loaderデータ・ファイルで行に入りきらない可能性があります。また、ファイルにバイナリ・データが含まれている場合も、行に入りきらない可能性があります。かわりに、データ・ファイルには、LOBフィールドのデータを含むファイル名が含まれています。その場合、SQL*Loaderおよび外部表コードにより、LOBFILEが開かれ、そのコンテンツが現在の行のLOB列にロードされます。その後、データは他の列タイプのデータと同様に、サーバーに渡されます。
JSON列は、スカラーとLOBのロードに使用されるものと同じ方法を使用してロードできます
SQL*Loaderは、制御ファイルを指定する場合と指定しない場合の2つの方法で使用できます。制御ファイルは、SQL*Loaderの動作と、ロードに使用される1つ以上のデータ・ファイルを制御します。制御ファイルを使用すると、ロード操作を詳細に制御できるため、より複雑なロード環境に対応できます。ただし、単純なロードでは、制御ファイルを指定せずにSQL*Loaderを使用できます(これはSQL*Loaderエクスプレス・モードと呼ばれます)。
SQL*Loaderの出力先は、Oracle Databaseデータベース(データがロードされる場所)、ログ・ファイル、拒否されたレコードが存在する場合の不良ファイルであり、廃棄ファイルに出力される場合もあります。
次の図に、制御ファイルを使用する標準的なSQL*Loaderセッションのフローの例を示します。
