2017-01-24 9 views
0

の出力に基づいて複数のファイルを作成します。ここでは私は3つの出力列を持つカスタムSSISデータフローコンポーネントを持つカスタムSSISコンポーネント

Id 
Name 
Content 

は、コンポーネント出力プロパティのスクリーンショットです: enter image description here

コンポーネントは、これらの結果セットの複数を返します。 I私にこのような何かを与えるフラットファイル出力先に結果パイプにできる午前:私は名前は名前でなければなりません別ののファイルにこれらの結果セットのそれぞれを記述する必要が

{E007818F-B9B9-46FF-9231-07367EB96C4F}, nameA.csv, just a text 
{9A36EC87-73BC-497D-9592-47FC119CB6E5}, nameB.csv, another text 

プロパティであり、コンテンツはコンテンツの結果セットのプロパティである必要があります。したがって、この場合、所望の出力は、2つのファイルがある:


nameA.csv

just a text 

nameB.csv

another text 

残念ながら結果セットの数私はマルチを作成することはできませんフラットファイルの宛先。

アイデア?

答えて

1

データを2つの別々のファイルに分割するには、ソースコンポーネントの後に "条件付き分割"変換を使用する必要があります。エディタで、セットの分割を引き起こすそれぞれの条件を作成し、分割1のために例えば


  • 出力名:nameA、条件:分割2のコンテンツ== "nameA"

  • 出力名前:nameB、条件:内容== "nameB"

各ファイルのフラットファイルの宛先を設定します。その後、緑色のコネクタを条件分割コンポーネントから関連する宛先コンポーネントにドラッグします。それは、動的作成

--Updated

はより複雑である...

あなたはName]フィールドにすべての名前を返すSQLタスクを実行して起動する必要があります。結果セットをオブジェクト変数に格納します。次に、これを各ループコンテナにリンクし、データフロータスクが含まれています。 ADO列挙子を使用し、上記で作成したオブジェクト変数を選択するFor Eachループを構成します。 変数マッピングも現在の列挙体に名前を格納するように構成します(これは後でファイル名に使用されます)。

データフロータスクでは、ソースコンポーネントは、WHERE name = 'オブジェクト変数の名前'を持つSELECTステートメントにする必要があります。宛先接続マネージャのプロパティで、上記のFor Eachループで作成されたConnectionString =変数の式を構成します。これは、各ファイルに反復の現在の名前の名前を与えます。

私はこれが役に立ちそうです。

+0

あなたの答えをありがとう。私は動的であり、コンポーネントから返された何百もの結果セットになる可能性があるので、設計時の名前は分かりません。あなたのソリューションは静的ですね。 –

+0

更新いただきありがとうございます。残念ながら、私はいくつかのSQLを実行するSQL Serverを持っていないので、これはうまくいくとは思えませんが、出力を返すカスタムコンポーネントがあります。とにかく、upvoted! –

+0

ありがとうございます。最初に出力をSQL Serverテーブルにロードすることができます。環境内にExpress Editionがない場合は、無料のExpress Editionをインストールできます。ちょうど私が言及すべきと思った – MayowaO

関連する問題