【问题标题】:SSIS - Insert all records with matching IDSSIS - 插入具有匹配ID的所有记录
【发布时间】:2016-08-18 07:53:23
【问题描述】:

我有以下临时表和具有相同数据的目标表:

ID | Name | Job    | Hash
1  | A    | IT     | XYZ1
2  | B    | Driver | XYZ2

临时表每次都会被截断并插入新数据。有时,一个人可以得到第二份工作。在这种情况下,我们在暂存表中有 2 条记录,分别为 ID 2Name B, but with a differentjobandhash`。

ID | Name | Job    | Hash
1  | A    | IT     | XYZ1
2  | B    | Driver | XYZ2
2  | B    | IT     | XYY4

如果发生这种情况,我需要将 ID 为 2 的所有记录插入到目标表中。我已经有一个 LKP 来检查(不)匹配的 ID,但是我如何“告诉”SSIS 根据我从不匹配输出中获得的 ID 从临时表中获取所有记录?

【问题讨论】:

  • 如果您使用 SQL 任务传输数据,这非常容易。不过我不太明白你的规则。
  • 我会试着这样解释。我的问题是我有多个具有相同 ID 的记录。如果具有该 ID 的这些记录之一与我们在目标表中已有的不同,我需要插入具有该 ID 的所有记录。我知道如何插入有变化的记录,但是如何插入所有与有变化的记录具有相同 ID 的记录。
  • 所以当源和目标中有 2/Driver 时,你什么都不插入。当源中有 2/Driver 和 2/IT 并且目标中有 2/Driver 时,您将两条记录都从源中插入?然后你会在目标中得到三个记录,其中两个是重复的。
  • 是的!除了我们在插入新数据之前截断目标表。所以我们最终会得到 2 条记录,分别是 2/Driver 和 2/IT
  • 嗯,这真的没有多大意义。 2/驱动程序存在所以不要加载它。截断表并重新加载....但您没有加载 2/Driver.下次是否会重新加载 2/Driver?您将需要发布 3 或 4 个案例来了解这件事的工作原理。

标签: sql-server tsql ssis


【解决方案1】:

您通过将查找中的不匹配输出链接到目标来告诉 ssis。假设您已经在查找中设置了“将行重定向到不匹配的输出” - 一般。在您的查找中,您检查 ma​​tching id(不确定您如何检查不匹配)这样,lookup 会将所有不匹配的行(按 Id)输出到目的地。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-24
    • 1970-01-01
    • 2012-07-31
    • 1970-01-01
    • 2016-10-18
    • 1970-01-01
    • 1970-01-01
    • 2019-03-20
    相关资源
    最近更新 更多