0

すべてのソース ファイルのデータ構造が同一であり、データが 1 つの宛先テーブルに送信されるという前提で、Foreach ループ コンテナーを使用して Excel ブックまたはシートのコレクションを列挙する方法の例をたくさん見てきました。 .

次のシナリオを処理するための最良の方法は次のとおりです。- 各ワークブック/シートには異なるスキーマがあります - ソース シートごとに 1:1 で一致する宛先テーブルがあります。- 標準的なクリーンアップ: ワークブックが作成され、"読み込み中" フォルダーに配置されます。SSIS パッケージは、読み込み中のフォルダー内のファイルを読み取り、正常に完了するとアーカイブ フォルダーに移動するジョブで実行されます。

ワークブックごとに個別の SSIS パッケージを作成できることはわかっていますが、それを維持するのは非常に面倒です。どんな助けでも大歓迎です!

4

1 に答える 1

1

私たちはずっと前に同じ問題に直面しました。私たちが行ったことを要約します。C# を使用してプログラムで SSIS パッケージを作成しました。フラット ファイルの情報 (テーブル名、列、フラット ファイル内のこれらの列の位置) を保持する MetaTable が維持されます。フラット ファイル名を抽出し、このフラット ファイルが属するテーブル、フラット ファイル内の列の位置について、メタ テーブルにクエリを実行します。

各フラット ファイルをコマンド ライン引数として PackageExe に渡すことにより、SQLSERVER でパッケージを実行します。そのため、各フラット ファイルを読み取って処理します。

フラット ファイルFFがあるとします。最初にフラット ファイルの名前を抽出し、次に DB にクエリを実行してテーブル名を取得します。1 から 10 までの列COL-1COL-2を含むTTであるとします。およびそれぞれ11 から 20です。MetaTable からこの情報を読み取ることで、派生列変換 (パッケージ) を作成しました。

私たちのアプリケーションには、フォルダー内に一連のフラット ファイルがあり、「For Loop Container SSIS」を使用して一度に 1 つのフラット ファイルを取得し、上記のプロセスを実行します。

于 2012-04-23T09:29:42.437 に答える