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

时间:2012-11-07 21:22:55

标签: ssis

我正在创建一个SSIS包来逐步将数据从Excel工作表(从iSeries数据库导出)加载到SQL表中,我现在要解决的问题是确定要更新哪些记录以及要插入哪些记录数据流,我已经看到它通过术语查找完成,所以我设置了一个术语查找,我遇到的问题是我需要匹配多个列来比较一个唯一的行(在下面的例子中我' d至少需要匹配Parent,2nd和RoutingCode,而Term Lookup转换只允许匹配一列,理论上我可以将成功的匹配输出到第二个查找和第三个但是看起来像迂回解决方案,并且有大量输入行可能会降低性能,所以我正在寻找更有经验的DBA的任何建议。

样本数据:

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

1 个答案:

答案 0 :(得分:3)

将Excel电子表格中的数据加载到SQL Server数据库上的临时表中。然后使用查询或存储过程(理想情况下是存储过程)来比较登台表和要插入或更新数据的目标之间的数据。如果您使用的是SQL Server 2008或更高版本,则可以使用 MERGE 语句将源表和目标表与INSERTUPDATE记录进行比较

Inserting, Updating, and Deleting Data by Using MERGE

您可以使用Data Flow Task将数据从Excel加载到SQL Server登台表。在控制流上,您可以在数据流任务之后放置Execute SQL Task以调用包含 MERGE 语句的存储过程。