0

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

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

宛先は、その月の各日の行があるテーブルです。ここで、[値]列は、Excelドキュメントの値を入力する必要がある空の列です。

[Date]       [Value]   [Other columns with distinct data]
4/01/2008    NULL      .....
4/01/2008    NULL
4/01/2008    NULL
4/02/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/02/2008    3.38
4/03/2008    3.38
4/03/2008    3.38
4/03/2008    3.38
...

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

だから、私の質問は、SSISパッケージのExcelソースとSQLServerデスティネーションの間にあるコンポーネントは何でしょうか?私は何を達成する必要があるかを知っています:

  • 宛先データセットの各日付について、Excelソースで一致する月を[日付]列で検索し、対応する値を見つけたいと思います。
  • 次に、Excelの値をSQLServerの宛先の[値]列に挿入する必要があります。
  • そして繰り返します...

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

ありがとう!

4

1 に答える 1

0

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

そして、更新ステートメントを記述します

UPDATE mainTable, #excelData
SET mainTable.Value = #excelData.Value
WHERE datepart(yy, mainTable.Date) = datepart(yy, #excelData.Value)  
and datepart(mm, mainTable.Date) = datepart(mm, #excelData.Value)
于 2009-06-23T19:18:58.820 に答える