gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 22:09:55 25 4
gpt4 key购买 nike

我有一个 SSIS 例程,它从一个非常动态的表中读取数据,并将它找到的任何行插入到不同数据库中的表中,然后截断原始源表。

由于源表的动态特性,这种截断导致行无法进入第二个数据库也就不足为奇了。

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

源表上有标识列,但未跨迁移。

我无法更改任何一个表架构。

最佳答案

一个听起来很愚蠢但很有效的选项是先删除并使用 OUTPUT条款。

control flow setup

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

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;

dataflow

在我的 OLE DB 源代码中,不使用 SELECT,而是删除您想要沿着管道向下传输的数据,然后输出已删除的虚拟表。像

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

results

有效,有效!

关于foreach - SSIS Foreach 通过一个表,插入另一个表并删除源行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15503959/

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