我正在创建一个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
答案 0 :(得分:3)
将Excel电子表格中的数据加载到SQL Server数据库上的临时表中。然后使用查询或存储过程(理想情况下是存储过程)来比较登台表和要插入或更新数据的目标之间的数据。如果您使用的是SQL Server 2008或更高版本,则可以使用 MERGE
语句将源表和目标表与INSERT
或UPDATE
记录进行比较
Inserting, Updating, and Deleting Data by Using MERGE
您可以使用Data Flow Task
将数据从Excel加载到SQL Server登台表。在控制流上,您可以在数据流任务之后放置Execute SQL Task
以调用包含 MERGE
语句的存储过程。