SSIS 比较表内容并更新另一个
SSIS Compare tables content and update another
我想比较两个 table,一个来自 Access Mdb,一个 SQL 服务器 table 是 SSIS。
目标是在存在差异时截断 table 并用 MDB 源填充它并在另一个 table 中更新版本。
我正在尝试通过查找来完成,但版本随行数递增,应该是一次。
需要对 2 个不同的表执行操作。
How am I supposed to perform only once the update even if I have 10 No
Match output rows ?
SSIS 提供 OLEDB 命令用于在数据流中执行管道更新。但是,正如您在问题中暗示的那样,这会每行执行一个 UPDATE 命令。
执行批量级别更新的更有效技术是:
- 截断更新暂存 table
- 检测数据流中哪些行发生了变化
- 将更改的行定向到目标并将数据存储在暂存中 table
在数据流之后添加一个执行 SQL 命令,它将执行从暂存 table 到目标 table 的更新。即
UPDATE T
SET T.Column1 = S.Column1
, T.Column2 = S.Column2
FROM MyTarget T
JOIN MySource S ON T.id = S.id
控制流程如下所示:
编辑:编辑步骤和图像以添加用于截断分段的步骤 table。
我想比较两个 table,一个来自 Access Mdb,一个 SQL 服务器 table 是 SSIS。
目标是在存在差异时截断 table 并用 MDB 源填充它并在另一个 table 中更新版本。
我正在尝试通过查找来完成,但版本随行数递增,应该是一次。
需要对 2 个不同的表执行操作。
How am I supposed to perform only once the update even if I have 10 No Match output rows ?
SSIS 提供 OLEDB 命令用于在数据流中执行管道更新。但是,正如您在问题中暗示的那样,这会每行执行一个 UPDATE 命令。
执行批量级别更新的更有效技术是:
- 截断更新暂存 table
- 检测数据流中哪些行发生了变化
- 将更改的行定向到目标并将数据存储在暂存中 table
在数据流之后添加一个执行 SQL 命令,它将执行从暂存 table 到目标 table 的更新。即
UPDATE T SET T.Column1 = S.Column1 , T.Column2 = S.Column2 FROM MyTarget T JOIN MySource S ON T.id = S.id
控制流程如下所示:
编辑:编辑步骤和图像以添加用于截断分段的步骤 table。