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 命令。

执行批量级别更新的更有效技术是:

  1. 截断更新暂存 table
  2. 检测数据流中哪些行发生了变化
  3. 将更改的行定向到目标并将数据存储在暂存中 table
  4. 在数据流之后添加一个执行 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。