2010-05-28 37 views
1

我有兩個OLE DB源對象的數據流任務。這是我想用SSIS實現的SQL:如何刪除基於SSIS中數據流任務比較的行?

Insert into server2.db.dbo.[table2] (...) 
Select col1, col2, col3 ... 
from Server1.db.dbo.[table1] where [table1.col1] not in 
(Select col5 from server2.db.dbo.[table2] Where ...) 

我對SSIS很新,不確定如何實現這一點。我想我可以做到這一點使用數據流任務和填充與server1.db.dbo.table1與server2.db.dbo第二源數據的第一來源。[表2],然後插入之前做條件檢查到server2.db.dbo。[table2]中。我不知道如何做條件檢查。任何幫助表示讚賞。

回答

1

雖然查找是好的(僅適用於不匹配指揮行),它有時是更好的階段數據到一個表,然後做一個SQL任務在目標服務器上,就像你的SQL語句。

如果你使用查找,你必須小心 - 它會根據查找任務中的設置緩存整個集合(你會看到包需要很長時間來初始化),SSIS是大小寫的,敏感,而SQL Server將依賴整理設置。

0

要做到這一點最簡單的方法是讓你的OLEDB源對象在Server1和SQL select col1, col2, col3 ... from db.dbo.[table1]。然後,在數據流中,使用sql select col5 from db.dbo.[table2] where ...從server2進行查找。在查找(對話框左下角的按鈕)上設置錯誤條件以重定向不匹配的行。設置匹配條件(在對話框的頂部標籤)從COL1拖動左邊COL5右側(箭頭應該,如果你這樣做了右它們之間出現)col1和COL5之間的匹配。完成後,放置您的OleDb目標對象,並將查找中的錯誤輸出拖放到此對象的輸入中。選擇server2.db.dbo。[table2]作爲目標表並正確映射行。

相關問題