SSIS - 插入新行,更新行

时间:2011-08-29 08:11:50

标签: sql-server ssis insert

检查哪一行已更改以及哪些行已存在,“最佳”或建议的方法是什么? 我找到的文章很少,但我不确定这些方法是否最好:

http://www.ssistalk.com/2007/03/09/ssis-using-a-checksum-to-determine-if-a-row-has-changed/
http://itssmee.wordpress.com/2010/10/03/ssis-insert-and-update-rows-in-a-table-based-on-the-contents-of-a-excel-file/
http://consultingblogs.emc.com/jamiethomson/archive/2006/09/12/SSIS_3A00_-Checking-if-a-row-exists-and-if-it-does_2C00_-has-it-changed.aspx

我需要这个来自25个数据库的大量数据

编辑:

在这篇文章中...... http://consultingblogs.emc.com/jamiethomson/archive/2006/09/12/SSIS_3A00_-Checking-if-a-row-exists-and-if-it-does_2C00_-has-it-changed.aspx ...如何添加更新记录的部分?我是否使用OLE DB命令或本文中的其他内容我看不到?

1 个答案:

答案 0 :(得分:4)

那些链接是最好的。 Phil和Jamie对这个问题非常了解。您唯一的另一个替代方法是加载整个表并使用T-SQL的MERGE命令来找出差异。

Jamie Thomson的帖子有三个以Union Alls结尾的输出,这些输出在你的终端数据库上并没有“真正起作用”。要清楚,你可以丢弃其中一个输出 - 因为它是“无变化”输出(标记为“年龄保持不变”的输出)。标记为“新客户”的那个是您可能会路由到OLE DB目标的那个。标记为“Age has changed”的那个是您将路由到OLE DB命令转换的那个。

现在,OLE DB命令转换不能那么快。有很多方法可以解决这个问题,但快速搜索可以解决这个问题。