通过将共同的'Date'字段与SSIS进行匹配,将单个源行复制到多个目标行。

问题描述:

以下是这种情况:我是SSIS处女,但我找到了一个借口来开始玩它。我在以下格式的Excel源数据集,以代表一个月份各行(该月的最后一天):通过将共同的'Date'字段与SSIS进行匹配,将单个源行复制到多个目标行。

[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源和我的SQL Server目标之间可能有什么组件?我知道我需要完成:

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

这是否即使使用SSIS的似乎值得?这是一次性的演出,但就像我说的,我认为这将是一个很好的参与SSIS的机会。与此同时,我可能只是将一个快速宏放在Excel中为我生成一些UPDATE语句。

谢谢!

将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) 
+0

我抛弃SSIS去这条路线。在Excel中编写一个简单的宏,并围绕这种类型的更新来完成任务的过程要容易得多。 – 2009-07-13 22:45:38