行の種類 (ヘッダー、タイプ 1 ソン、タイプ 2 ソン、またはフッター) に応じて、2 つの新しい列RECORD_ID
とROW_TYPE
.
RECORD_ID
nextVal()
行タイプがヘッダーの場合とそれ以外の場合を使用して、シーケンスを介して入力lastVal()
されます。
ROW_TYPE
行タイプが取り込まれます。
このようにして、後で の値に基づいてテーブルを作成ROW_TYPE
し、列の父と息子の関係を維持することができRECORD_ID
ます。
編集(詳細説明)
ファイルの行が次の構造を持っているとしましょう
Header: Field1;Field2;Field3
Type1: Field1;Field2
Type2: Field1;Field2;Field3;Field4
Footer: Field1;Field2
次に、ターゲット テーブルには、対応するファイル行の各フィールドの列と、ID の列が必要になります。彼らはこのように見えるでしょう
Header
ID | Header col1 | Header col2 | Header col3
Type1
ID | Type1 col1 | Type1 col2
Type2
ID | Type2 col1 | Type2 col2 | Type2 col3 | Type2 col4
Footer
ID | Footer col1 | Footer col2
次に、一時テーブルには6つの列があり(より多くのテーブルから5つ、プラス1つType
)、次のようになります
Temp
Type | ID | Temp col1 | Temp col2 | Temp col3 | Temp col4
この構造を使用すると、テーブル内のファイルのすべての行をロードし、Type
分析している行に応じて異なる値を列に入れ、列内のシーケンス ( または ) を適切に呼び出す最初nextVal()
のlastVal()
インターフェイスを持つことができます。 ID
.
Temp interface
Type <- rowType
ID <- case when rowType = Header then sequence.nextVal() else sequence.lastVal() end
Temp col1 <- File field1
Temp col2 <- File field2
Temp col3 <- File field3
Temp col4 <- File field4
次に、この一時テーブルからそれぞれ 1 つのターゲット テーブルにデータを入力し、[タイプ] 列でフィルター処理する複数のインターフェイスを作成できます。
Header interface
ID <- ID
Header col1 <- Temp col1
Header col2 <- Temp col2
Header col3 <- Temp col3
where Type = 'Header'