SSIS - 删除行

ili*_*ica 12 ssis insert delete-row sql-delete

我是SSIS的新手,需要这方面的帮助.我找到了一篇文章,描述了如何检测存在的行和已更改的行.我缺少的部分是如何更新更改的行.我发现一些文章说它也是删除已更改的记录并插入新记录集的好方法.问题是我不知道该如何删除(红色框).

有什么建议?

在此输入图像描述

小智 21

如果必须删除数据流任务中的行,则需要使用OLE DB Command转换并编写DELETE语句DELETE FROM dbo.Table WHERE ColumnName = ?.然后,在OLE DB命令转换的列映射中,您将使用来自上一个转换的数据映射问号所表示的参数.在您的情况下,来自Union All 2的数据.

但是,我不建议使用该选项,因为OLE DB Command会针对每一行执行,如果行太多,它可能会降低程序包的速度.

我会推荐这样的东西:

  1. 使用OLE DB Destination将输出重定向Union All 2到临时登台表(例如dbo.Staging).

  2. 让我们假设你的最终目的地表是dbo.Destination.现在,您的Staging表包含应从表Destination中删除的所有记录.

  3. 控制流选项卡,放置Execute SQL TaskData Flow Task.在执行SQL任务中,编写SQL语句或使用将调用SQL语句的存储过程来连接Staging和Destination之间的记录,以从Destination表中删除所有匹配的行.

  4. 此外,在数据流任务之前放置另一个执行SQL任务.在此"执行SQL任务"中,从"临时表"中删除/截断行.

这样的东西可能会删除行:

DELETE      D
FROM        dbo.Destination D
INNER JOIN  dbo.Staging     S
ON          D.DestinationId = S.StagingId
Run Code Online (Sandbox Code Playgroud)

希望有所帮助.

  • 顺便问一下,你有什么建议让dbo.Staging表临时?创建将删除此表的新数据流任务?或者我只删除数据并始终保留临时表? (3认同)