0


0

ここにシナリオがあります:私はSSISの処女ですが、私はそれで遊んで言い訳を見つけました。 次の形式の単一のExcelソースデータセットがあります。各行は1か月(月の最後の日)を表します。

[Date]       [Value]
4/30/2008 3.38 5/31/2008 3.65 6/30/2008 3.97
...

私の行き先は月の各日の行を持つテーブルです、ここで[Value]列は私がExcel文書からの値で満たす必要がある私の空の列です:

[Date]       [Value]   [Other columns with distinct data]
2008年4月1日NULL ..... 4/01/2008 NULL 4/01/2008 NULL 4/02/2008 NULL 4/02/2008 NULL 4/03/2008 NULL 4/03/2008 NULL 4/03/2008 NULL
...

先のテーブルが最終的に次のようになるように、変換先テーブルの対応する月の値の各日について、Excelドキュメントの各月の単一の値をコピーする必要があります。

[Date]       [Value]
4/01/2008 3.38 4/01/2008 3.38 4/01/2008 3.38 4/02/2008 3.38 4/02/2008 3.38 4/03/2008 3.38 4/03/2008 3.38 4 / 03/2008 3.38
...

「なぜ行にまたがって値を複製したいのですか?」と思うかもしれませんが、これは単なるデータの埋め戻しです - 将来のエントリはそれらをまとめて保存するWebアプリケーションを使用して作成されます。手動で。

それで、私の質問は、SSISパッケージのExcelソースとSQL Serverの宛先の間のコンポーネントはどうなるのでしょうか。 私が達成する必要があることを私は知っています:

  • 送信先データセットの各日付について、Excelの[日付]列で一致する月を調べ、対応する値を見つけます。

  • 次に、SQL Server Destinationの[Value]列にExcelの値を挿入する必要があります。

  • そして繰り返します…​

これはSSISを使用する価値すらありますか? これは一回限りのギグですが、私が言ったように、これはSSISに触れる良い機会になると思いました。 それまでの間、私はおそらくExcelでクイックマクロをまとめていくつかのUPDATEステートメントを生成することにします。

ありがとうございます。

1 Answer


0


Excelシートの内容をSQL DBの一時テーブル(一時テーブル:#excelData)に取得します。

そして、更新ステートメントを書きます

UPDATE mainTable、#excelData SET mainTable.Value =#excelData.Value WHERE datepart(yy、mainTable.Date)= datepart(yy、#excelData.Value)およびdatepart(mm、mainTable.Date)= datepart(mm、#excelData)。値)