2015-09-10 65 views
0

我正在創建一個包,用於維護與源同步的目標表中的數據行。我所做的是首先使用查找來對目標中不存在的所有行執行復制。例如,我的兩個表有一個ID,讓說,在某個時刻,他們是這樣的:使用SSIS刪除行

來源:ID(1,2,3,4,5,6,7)

目的地:Id(4,7,6,9)

現在我正在查找控件中使用設置「重定向行到不匹配輸出」。結果,在這個特定的情況下,我會得到1,2,3,5,這些行就是我要複製到目的地的。我也希望做的事情(以不同的步驟或同一步驟無關緊要)也是從目的地獲得數字9並將其刪除。原因是它不再存在於源代碼中。我一直在嘗試使用相同的查找控件;但是我無法讓它工作。我是這個工具的新手,我可能沒有在這個場景中使用正確的控件。所以如果有不同的方式來做到這一點,那也可以。

回答

0

您可以使用執行SQL任務中的SQL語句執行此操作。我已經添加下面的演示結果向你展示它是如何工作#溫度是源標識和#TEMP2目的地ID /試着將下面的SQL:

select * from dbo.#temp 
select * from dbo.#temp2 

select b.one 
from #temp2 b left join #temp a 
on a.one = b.one 
where a.one is null 

Delete b from #temp2 b left join #temp a 
on a.one = b.one where a.one is null 

select * from #temp2 order by one 

enter image description here

0

你可以做到這一點通過做反向查找。

例如,對於插入你做到以下幾點:

  1. OLE源表
  2. 查找(目標表)
  3. 查找無匹配輸出
  4. OLE源目標

對於刪除,請按照反向查找:

  1. OLE目標表
  2. 查找(源表)
  3. 查找無匹配輸出
  4. OLE命令 - DELETE從id =?

enter image description here