Ssis 如何通过将多个列与Excel源进行比较来更新表?
我正在创建一个SSIS包,以增量方式将数据从Excel工作表(从iSeries数据库导出)加载到SQL表中,我现在遇到的问题是确定要更新哪些记录以及在数据流中插入哪些记录,我看到它是通过执行术语查找来完成的,所以我设置了术语查找,我遇到的问题是,我需要匹配多个列来比较唯一的行(在下面的示例中,我至少需要匹配父、第二和路由代码),而术语查找转换只允许匹配一列,现在从理论上讲,我可以将成功的匹配输出到第二次查找和第三次查找,但这似乎是一个迂回的解决方案,而且输入行太多可能会降低性能,因此我正在寻找经验丰富的DBA的任何建议 样本数据:Ssis 如何通过将多个列与Excel源进行比较来更新表?,ssis,Ssis,我正在创建一个SSIS包,以增量方式将数据从Excel工作表(从iSeries数据库导出)加载到SQL表中,我现在遇到的问题是确定要更新哪些记录以及在数据流中插入哪些记录,我看到它是通过执行术语查找来完成的,所以我设置了术语查找,我遇到的问题是,我需要匹配多个列来比较唯一的行(在下面的示例中,我至少需要匹配父、第二和路由代码),而术语查找转换只允许匹配一列,现在从理论上讲,我可以将成功的匹配输出到第二次查找和第三次查找,但这似乎是一个迂回的解决方案,而且输入行太多可能会降低性能,因此我正在寻找经
将Excel电子表格中的数据加载到SQL Server数据库上的暂存表中。然后使用查询或存储过程(理想情况下是存储过程)比较暂存表和要插入或更新数据的目标之间的数据。如果您使用的是SQL Server 2008或更高版本,则可以使用
MERGE
语句将源表和目标表与插入
或更新
记录进行比较
您可以使用
数据流任务
将数据从Excel加载到SQL Server临时表。在控制流上,可以在数据流任务之后放置Execute SQL任务
,以调用将包含MERGE
语句的存储过程。将数据从Excel电子表格加载到SQL Server数据库的暂存表中。然后使用查询或存储过程(理想情况下是存储过程)比较暂存表和要插入或更新数据的目标之间的数据。如果您使用的是SQL Server 2008或更高版本,则可以使用MERGE
语句将源表和目标表与插入
或更新
记录进行比较
您可以使用数据流任务
将数据从Excel加载到SQL Server临时表。在控制流上,可以在数据流任务之后放置executesql任务
,以调用将包含MERGE
语句的存储过程
Parent 2nd Itm# 3rd Itm# Routing Code UpdatedColumn
------- ----------- ----------- -------------- -------------
921221 TF2-14511 TF2-14511 PLANNING 1568
921221 TF2-14511 TF2-14511 COAT&CAP 14545
921221 TF2-14511 TF2-14511 S.S 0-OVERLAPS 45556
842568 TF2-14511 TF2-14511 PLANNING 4545