0

我正在创建一个 SSIS 包,以将 Excel 工作表(从 iSeries 数据库导出)中的数据增量加载到 SQL 表中,我目前遇到的问题是确定要更新哪些记录以及要在数据流中插入哪些记录,我已经看到它是通过进行术语查找来完成的,所以我设置了术语查找,我遇到的问题是我需要匹配多个列来比较唯一的行(在下面的示例中,我需要至少匹配 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
4

1 回答 1

3

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

使用 MERGE 插入、更新和删除数据

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

于 2012-11-07T21:39:00.070 回答