0

场景如下:我是 SSIS 处女,但我找到了一个开始玩它的借口。我有一个以下格式的 Excel 源数据集,每一行代表一个月(一个月的最后一天):

[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]
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 应用程序进行的,但可以调整或编辑个别的日条目手动。

所以,我的问题是:我的 Excel 源和我的 SSIS 包中的 SQL Server 目标之间的组件可能是什么?我知道我需要完成什么:

  • 对于目标数据集中的每个日期,我想在 Excel 源中查找其日期列中的匹配月份并找到相应的值
  • 接下来,我需要将 Excel 值插入到我的 SQL Server 目标的值列中。
  • 并重复...

这似乎值得使用 SSIS 吗?这是一次一次性的演出,但就像我说的,我认为这将是一个涉足 SSIS 的好机会。同时,我可能只是要在 Excel 中组合一个快速宏来为我生成一些 UPDATE 语句。

谢谢!

4

1 回答 1

0

将 Excel 工作表的内容放入 SQL DB 中的临时表中(临时表:#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 回答