0

N テーブルに似たカスタム ファイル形式があるとします。3 を選びましょう。3 つのデータベース テーブルを埋めるカスタム ロード ラッパーを作成して、ファイルを変換できます。

しかし、スペースとリソースの制約のために、これらすべてをテーブルスペースに格納することはできません。

Oracle Preprocessor for External Tables を使用して、カスタム ファイルを 3 つの異なる方法で変換できますか?

私が読んだ使用例は、gzip で圧縮されたテキスト ファイルの例です。ただし、これは 1 対 1 のファイルとテーブルの関係であり、変換は 1 つだけです。

N 個のデータ抽出が可能な単一のファイルがあります。

  • それぞれが異なるプログラムを参照する N 個の外部テーブルを定義する必要がありますか?
  • 3 つのテーブルを同じファイルにマップすると、パフォーマンスにどのような影響がありますか? (アクセスは、ほとんどまたはすべての読み取りであり、書き込みはほとんどまたはまったくありません)。

また、プリプロセッサの標準出力はどのような形式にする必要がありますか? CSV である必要がありますか、または外部テーブル ドライバーを構成する方法はありますか?

4

1 に答える 1

0

「3 つのテーブルを同じファイルにマップすると、パフォーマンスにどのような影響がありますか? (アクセスはほとんどまたはすべての読み取りであり、書き込みはほとんどまたはまったくありません」

1 つの外部テーブル定義または 3 つの外部テーブル定義を介して同じファイルにアクセスする 3 つのセッション間で、ほとんどまたはまったく違いはありません。外部テーブルはデータベースによって (ファイル システムまたはディスクによって) キャッシュされないため、すべてのアクセスは純粋に物理的な読み取りになります。プリプロセッサ プログラムによっては、ある程度のシリアライゼーションが存在する場合があります (または、プリプロセッサ プログラムを使用してシリアライゼーションを強制することもできます)。

パフォーマンスに関しては、単一のセッションで外部ファイル/テーブルをスキャンし、それを 1 つ以上のデータベース テーブルにロードする方がよいでしょう。他のセッションはそこからそれを読み取り、SGA にキャッシュされます。また、すべてを読み取る必要がないように、データベース テーブルにインデックスを付けることができます。

複数テーブルの挿入を使用して、1 つのパスで単一の外部テーブル定義から複数のデータベース テーブルをロードできる場合があります。

「プリプロセッサの標準出力はどの形式でなければなりませんか? CSV でなければなりませんか、それとも外部テーブル ドライバを構成する方法はありますか?」

これはほとんど SQL*Loader に準拠しており、どちらもユーティリティ マニュアルに記載されています。固定形式またはその他の区切り文字を使用できます。

それぞれが異なるプログラムを参照する N 個の外部テーブルを定義する必要がありますか?

データがどのようにインターリーブされるかによって異なります。プリプロセッサを無視すると、同じファイルから異なる列をプルする異なる外部テーブルを作成したり、LOAD WHEN句を使用して含めたり除外したりするレコードを決定したりできます。

于 2009-08-18T01:58:09.207 に答える