首页 > 解决方案 > SSIS 检测变化

问题描述

我目前正在学习有关 SSIS 的方法。我正在寻找一种更好的方法来做某事。

我正在将 Oracle 数据库中的数据加载到 SQL Server 中。

Oracle 数据被加载、转换和排序。SQL Server 数据也被加载、排序。

然后将它们放入合并连接(完全外部)。

然后发生条件拆分;如果密钥不在源中,而是在目标中。记录被删除(实际上已存档)。如果密钥在源中,但不在目标中。记录沿着要插入的路径发送。

如果它们的键存在于两者中。然后它被发送到另一条路径 - 这就是我的问题。

该表有 45 个字段(不是我的决定!),如果有任何变化,我需要更新记录。目前我使用查找,将存在的每个字段与其他字段进行匹配,这是一种非常尴尬的“从左到右拖动名称匹配的位置”。有时它也被证明是缓慢的。更不用说维护起来很糟糕了。

简而言之:我正在寻找您将如何正确检查您的来源和目的地之间的差异?当每个字段都可以随时更改时。

谢谢。

标签: sql-serverssisetl

解决方案


假设前面的评论是正确的,表格是否有一个“上次更新日期”列,每次插入/更新行时,日期值都会改变?如果是,那么您的 ETL 只需要选择“上次更新日期”大于 ETL 上次运行时间的行,然后使用两列 ID 和“上次更新日期”而不是所有 45 列来加入源和目标。

SSIS MERGE 组件当然适合这种情况,但公平警告它使用起来非常复杂。Sentry One(前 Pragmatic Works)第三方工具 Task Factory ($$) 也可以使用,并且使用起来不太复杂。

祝你好运。


推荐阅读