2011-08-29 86 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組件的內容 –