Sql server 2005 通过匹配公共';日期';带有SSI的字段
下面是一个场景:我是SSIS处女,但我找到了一个借口开始玩它。我有一个以下格式的Excel源数据集,每行代表一个月(该月的最后一天): 我的目标是一个表,该表中每个月的每一天都有一行,[Value]列是我需要用Excel文档中的值填充的空列:Sql server 2005 通过匹配公共';日期';带有SSI的字段,sql-server-2005,excel,ssis,data-transfer,Sql Server 2005,Excel,Ssis,Data Transfer,下面是一个场景:我是SSIS处女,但我找到了一个借口开始玩它。我有一个以下格式的Excel源数据集,每行代表一个月(该月的最后一天): 我的目标是一个表,该表中每个月的每一天都有一行,[Value]列是我需要用Excel文档中的值填充的空列: [Date] [Value] [Other columns with distinct data] 4/01/2008 NULL ..... 4/01/2008 NULL 4/01/2008 NULL 4/02/
[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目标的值列中
- 然后重复
谢谢 将Excel工作表的内容放入SQL DB中的临时表中(临时表:#excelData) 然后编写一个update语句
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)
我抛弃了SSI,走了这条路。在Excel中编写一个简单的宏并围绕这种类型的更新编写一个过程来完成任务要容易得多。
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)