Oracleデータベースに外部表を作成し、サーバー上のフラット・ファイルからそのデータを取り出したいとします。このファイルの形式は自明ではありません。このファイルの各行は、行の接頭辞(接頭辞自体は常に固定長です)に応じて、いくつかの異なるレイアウトの1つになります。たとえば、'TYPE1'
で始まる行は、'TYPE2'
で始まる行とは異なるレイアウトになります。Oracle外部テーブル:高度なフラット・ファイル・レイアウト
私は、外部テーブルがSQL ローダーのコントロールファイルで利用できるすべての構造を利用できることを読んだことがあります。しかし、私はすべての行が共通のレイアウトを共有する簡単なフラットファイルレイアウトに対処するために縫い目だけを読みました。 SQL Loader制御ファイルは簡単にWHEN
句を使用してこのシナリオを扱うことができる:
WHEN (1:5) = 'TYPE1'
(
field1 POSITION(10:18),
field2 POSITION(26:35)
)
WHEN (1:5) = 'TYPE2'
(
field1 POSITION(23:27),
field2 POSITION(15:19)
)
は、どのように私は、Oracleの外部表の定義の構文を使用して、このようなレイアウトを表現することができますか?
ありがとうリンク、それは非常に便利です! :)しかし、そのドキュメントによると、LOAD WHEN句は、いくつかのフィールドレイアウトのいずれかを選択するために使用されません。 "LOAD WHEN condition_spec句は、データベースに渡す必要があるレコードを識別するために使用されます。 「 エクスポートするレコードを選択するのではなく、異なるフィールドレイアウトの中からこの節を選択する例がありますか? –
あなたは複数の外部テーブルで終わるつもりです。 TYPE1レコード用のテーブルとTYPE2レコード用のテーブル。あなたがそれについて考えるなら、テーブルは複数のレイアウトを持つことができません。 – David
私はそのルートに行かなければならないかと思っていました。私はテーブルが複数のレイアウトを持つことができないことを理解しています。しかし、私の場合は、すべての線種が異なるフィールドで同じフィールドを指定します。ヒントをありがとう! :)あなたの最新のコメントを含めるためにあなたの答えを編集しますか? –