SSIS Foreach通过表,插入另一个表并删除源行

前端之家收集整理的这篇文章主要介绍了SSIS Foreach通过表,插入另一个表并删除源行前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个SSIS例程,它从一个非常动态的表中读取,并在截断原始源表之前,将它找到的任何行插入到不同数据库中的表中.

由于源表的动态特性,这种截断不会令人惊讶地导致行无法进入第二个数据库.

删除已迁移的行的最佳方法是什么?

源表上有一个标识列,但不会迁移它.

我无法更改任何表架构.

解决方法

一个可能听起来很愚蠢但可行的选项是首先删除并使用 OUTPUT子句.

我创建了一个简单的控制流,为我填充一个表.

IF EXISTS
(
    SELECT 1 FROM sys.tables AS T WHERE T.name = 'DeleteFirst'
)
BEGIN
    DROP TABLE dbo.DeleteFirst;
END

CREATE TABLE dbo.DeleteFirst
(
    [name] sysname
);

INSERT INTO
    dbo.DeleteFirst
SELECT
    V.name
FROM
    master.dbo.spt_values V
WHERE
    V.name IS NOT NULL;

在我的OLE DB源中,不是使用SELECT,而是删除要沿管道传输的数据并输出DELETED虚拟表. Somethinng喜欢

DELETE
    DF
OUTPUT
    DELETED.*
FROM
    dbo.DeleteFirst AS DF;

它有效,它的工作原理!

原文链接:https://www.f2er.com/mssql/79276.html

猜你在找的MsSQL相关文章