![](/img/trans.png)
[英]how to avoid re-inserting data into sql table while re-running SSIS package that loads data from flat file to SQL table?
[英]How to avoid re-inserting data (duplicates) into SQL Server table while re-running SSIS package that loads data?
有兩種方法可以做到這一點:
(1)使用SQL Command
如果源和目標位於同一服務器上,則可以使用此選項
由於您使用的是ADO.NET源,因此可以將數據訪問模式更改為SQL命令,並僅選擇目標中不存在的數據:
SELECT *
FROM SourceTable
WHERE NOT EXISTS(
SELECT 1
FROM DestinationTable
WHERE SourceTable.ID = DestinationColumn.ID)
(2)使用Lookup Transformation
您可以使用查找轉換來獲取源和目標之間的不匹配行,並忽略重復項:
為了刪除重復項,請使用帶有以下查詢的SQL任務(假設您沒有提取數百萬行,並且您希望刪除提取的數據上的重復項,而不是目標):
with cte as (
select field1,field2, row_number() over(partition by allfieldsfromPK order by allfieldsfromPK) as rownum)
delete from cte where rownum > 1
然后使用數據流任務並將干凈的數據插入目標表。
如果您只是不想插入重復項,一個非常好的選擇是使用MERGE語句,這是一種更高效的替代方案。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.