Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ssis 如何通过将多个列与Excel源进行比较来更新表?_Ssis - Fatal编程技术网

Ssis 如何通过将多个列与Excel源进行比较来更新表?

Ssis 如何通过将多个列与Excel源进行比较来更新表?,ssis,Ssis,我正在创建一个SSIS包,以增量方式将数据从Excel工作表(从iSeries数据库导出)加载到SQL表中,我现在遇到的问题是确定要更新哪些记录以及在数据流中插入哪些记录,我看到它是通过执行术语查找来完成的,所以我设置了术语查找,我遇到的问题是,我需要匹配多个列来比较唯一的行(在下面的示例中,我至少需要匹配父、第二和路由代码),而术语查找转换只允许匹配一列,现在从理论上讲,我可以将成功的匹配输出到第二次查找和第三次查找,但这似乎是一个迂回的解决方案,而且输入行太多可能会降低性能,因此我正在寻找经

我正在创建一个SSIS包,以增量方式将数据从Excel工作表(从iSeries数据库导出)加载到SQL表中,我现在遇到的问题是确定要更新哪些记录以及在数据流中插入哪些记录,我看到它是通过执行术语查找来完成的,所以我设置了术语查找,我遇到的问题是,我需要匹配多个列来比较唯一的行(在下面的示例中,我至少需要匹配父、第二和路由代码),而术语查找转换只允许匹配一列,现在从理论上讲,我可以将成功的匹配输出到第二次查找和第三次查找,但这似乎是一个迂回的解决方案,而且输入行太多可能会降低性能,因此我正在寻找经验丰富的DBA的任何建议

样本数据:
将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