gpt4 book ai didi

SSIS - 删除行

转载 作者:行者123 更新时间:2023-12-04 00:48:12 26 4
gpt4 key购买 nike

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

有什么建议吗?

enter image description here

最佳答案

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

但是,我不推荐该选项,因为 OLE DB 命令对每一行执行,如果行太多,它可能会减慢您的程序包速度。

我会推荐这样的东西:

  • 重定向 Union All 2 的输出使用 OLE DB Destination 到临时登台表(比如 dbo.Staging )。
  • 让我们假设您的最终目标表是 dbo.目的地 .现在,您的 Staging 表具有应从表 Destination 中删除的所有记录。
  • 关于 控制流 选项卡,放置一个 Execute SQL TaskData Flow Task .在执行 SQL 任务中,编写 SQL 语句或使用将调用 SQL 语句的存储过程连接 Staging 和 Destination 之间的记录,以从 Destination 表中删除所有匹配的行。
  • 此外,在数据流任务之前放置另一个执行 SQL 任务。在此执行 SQL 任务中,从临时表中删除/截断行。

  • 这样的事情可能会删除行:。
    DELETE      D
    FROM dbo.Destination D
    INNER JOIN dbo.Staging S
    ON D.DestinationId = S.StagingId

    希望有帮助。

    关于SSIS - 删除行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7254079/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com