0

特定のフィールドを含む CSV ファイルを読み取り、少し調整して、結果をテーブルに挿入する SSIS データ フロー タスクがあります。ソース ファイル名はパッケージ パラメータです。そこではすべてがうまくいっています。

ここで、追加のフィールドを使用して、わずかに異なる種類の CSV ファイルを処理する必要があります。この余分なフィールドは安全に無視できるため、処理は基本的に同じです。唯一の違いは、データ ソースの列マッピングにあります。

もちろん、パッケージ全体のコピーを作成し、2 番目のファイル形式に一致するようにデータ ソースを微調整することもできます。ただし、この「解決策」はひどい重複のように思えます。処理中に変更があった場合、2 回行う必要があります。処理するファイルの種類を伝える別のパラメーターをパッケージに渡したいと思います。

問題は、パラメーターに応じて SSIS を 1 つのデータ ソースまたは別のデータ ソースから読み取る方法がわからないことです。したがって、質問です。

4

2 に答える 2

1

SSIS パッケージの接続マネージャー (CSV 定義) とデータ フローを複製し、新しいファイル形式に合わせて微調整します。次に、説明したパラメーターを使用して、いずれかのデータフローを有効/無効にします。

本質的に、SSIS は可変メタデータを処理しません。これが繰り返されるパターンになる場合は、SSIS のアップストリームで対処し、VB / C# コマンドライン アプリを構築してファイルを SQL テーブルに分割します。

于 2013-04-12T00:31:47.310 に答える
0

接続マネージャーにすべてのデータを 1 列にプッシュさせることができます。次に、スクリプト変換コンポーネントを使用して、行のフィールド数に応じてデータを解析して出力します。

区切り文字に基づいてデータを文字列配列などに分割できます (これを行う必要があるときに、Google で助けを求めました)。配列を使用すると、そのサイズと、接続されているファイルの種類がわかります。

その後、宛先へのマッピングは同じままにすることができます。コンポーネントを複製する必要もありません。

私が使用していたファイルは常に同じ形式であることを意図していましたが、ファイルを送信するシステムのバージョンに応じて変更される可能性があるため、私は自分自身で同様のことをしなければなりませんでした。ファイル形式のマイナーなバリエーションを処理できました。ファイルが 99% 常に同じであれば問題ありません。根本的に異なる場合は、別のファイル接続マネージャーを使用することをお勧めします。

于 2013-08-22T19:37:16.957 に答える