質問: SQL ServerにExcelデータをインポートするタスクがあります。 Excelデータは、Excelテンプレートから得られます。さまざまなクレンジングに使用できるさまざまなExcelテンプレートがありますので、Excelの列はすべてのテンプレートにわたって同じではありません。データはSQ1の1つの共通テーブルにインポートする必要があります。 私はグーグルで、ネット上で利用可能な多くのサンプルがたくさんありますが、どの方法が最良の方法であるかはわかりません。 私はテンプレートの動的な列を考慮して上記を達成する方法について私にご案内をお願いします。 Excelのテンプレートでは、開始行と終了行は固定されていません。
回答: SSIS SSISパッケージ内のデータを移動するための主な`Data Flow Task`である`Data Flow Task`は、ソースプロバイダのメタデータに密接に関連しています。 1つのソースにstring、int、stringがあり、次の文字列にstring、string、string、stringがある場合、メタデータは同じデータフロー内のその作業では大きく異なってしまいます。整数データを文字列に変換すること*はでき*ます*が* 、列数の違いを克服することはできません。 あなたのケースでは、これらのスプレッドシートから統合テーブルに送られるデータに適用するために非常に複雑なビジネスロジックがない限り、おそらくN + 1パッケージを設計することになります。あなたが受け取る可能性のあるExcel形式ごとのパッケージ。私は、ファイルがどのテンプレート(ClientAV1.xlsx、ClientBV2.xlsxなど)から供給されたかを判断するロジックがあると仮定しています。これらのパッケージには、Excel Source to OLE DB Destinationというデータフローがあります。最終的なパッケージは、親/コントローラ/マスターパッケージになります。それは利用可能なファイルに基づいて他のパッケージの調整を処理します。 C# あなたはasp.netをタグ付けしているので、私はあなたが.NETのアプローチでもうまくいたと仮定しています。この回答では、.NETでExcelファイルを読み取る方法について説明します。また、SSISデータフローにフィードする際に、一括コマンドを発行してSQL Serverにデータをロードすることを妨げるものは何もありません。