2010-12-01 27 views
0

SSISパッケージ内で変換する必要がある関連するデータの行を含む表がありますが、その方法についてはわかりません。SSIS:区切りの行をフィールドに変換する

この表では、互いに関連する行は、パイプ文字を含む行で区切られています。

テストライン1_1
テストライン1_2
テストライン1_3
|
テストライン2_1
テストライン2_2
テストライン2_3
|
テストライン3_1
テストライン3_2
試験ラインなど3_3

..私はパイプで区切られた1つの行に行の各グループの行をテーブルにこれを移動して連結する必要

デリミタ。したがって、上記の例から、私は別のテーブルにで終わる必要があります。

検査ライン1_1テストライン1_2テストライン1_3
テストライン2_1テストライン2_2テストライン2_3
検査ライン3_1テストライン3_2テストライン3_3

私はそれを行う方法がわかりません。私はテキストファイルにエクスポートして、パイプ区切り文字を使って再インポートすることを考えました - これはうまくいくでしょうが、私は何百万もの行を処理していますので、このオーバーヘッドを欲しがるでしょう。私はどのようにわからない。

ご協力いただきありがとうございます。

+0

パイプ行で区切られたデータは常に3行ですか? –

答えて

1

ソースコンポーネントを使用するデータフロータスクを作成できます。ソースはSQLステートメントでデータを検索します。

次に、スクリプトコンポーネントを変換として追加します。スクリプトコンポーネントは非同期として設定する必要があります。スクリプトコンポーネントの入力と出力タブを選択し、出力0を選択します。SynchronousInputIDをNoneに設定します。これにより、コンポーネントは入力された行数とは異なる行数を出力することができます。 Output Columnsブランチの下に新しい列を追加します。

スクリプトコンポーネントでは、必要に応じてデータを連結できます。デフォルトでは、入力バッファはRowになり、出力バッファはOutput0Bufferになります。 Row.NextRow()を使用して次の入力行を取得し、Output0Buffer.AddRow()を使用して新しい出力行を追加できます。

与えられたサンプルデータを使用すると、 '|'が入力されるまで入力データを出力バッファに追加できます。表示されます。または、データに合ったカウンタを使用することもできます。

+0

ありがとう、それは私が探していたものです。 –

関連する問題