2011-08-29 89 views
4

什么是“最佳”或推荐的方法来检查哪一行已更改以及哪些行已存在? 我发现了几篇文章,但我不知道如果这些方法是最好的:SSIS - 插入新行,更新行

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 ...如何为upd添加部分ating记录?我是否使用OLE DB命令或在本文中还有其他内容我看不到?

回答

3

这些链接是最好的。菲尔和杰米对这个问题非常了解。你唯一的另一种真正的选择是加载整个表并使用T-SQL的MERGE命令找出差异。

Jamie Thomson的帖子有三个输出,以Union Alls结尾,并不真正“在您的最终数据库上”工作“。要清楚的是,你可以放弃这些输出之一 - 因为它是“无变化”输出(标有“年龄保持不变”的输出)。标有“新客户”的标签就是您可能会路由到OLE DB目的地的标签。标有“Age has changed”的标签就是您要进入OLE DB Command转换的标签。

现在,OLE DB命令转换不能那么快。这种缓慢有办法,但快速搜索应该为你解决这个问题。

+0

感谢您的回答..我编辑了我的问题,请问您是否可以帮助解决这个问题? –

+0

修正答案以澄清在Jamie的示例中代替“黑洞”Union All组件的内容 –