通过将共同的'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)
我抛弃SSIS去这条路线。在Excel中编写一个简单的宏,并围绕这种类型的更新来完成任务的过程要容易得多。 – 2009-07-13 22:45:38