sql-server - SSIS 检测变化
问题描述
我目前正在学习有关 SSIS 的方法。我正在寻找一种更好的方法来做某事。
我正在将 Oracle 数据库中的数据加载到 SQL Server 中。
Oracle 数据被加载、转换和排序。SQL Server 数据也被加载、排序。
然后将它们放入合并连接(完全外部)。
然后发生条件拆分;如果密钥不在源中,而是在目标中。记录被删除(实际上已存档)。如果密钥在源中,但不在目标中。记录沿着要插入的路径发送。
如果它们的键存在于两者中。然后它被发送到另一条路径 - 这就是我的问题。
该表有 45 个字段(不是我的决定!),如果有任何变化,我需要更新记录。目前我使用查找,将存在的每个字段与其他字段进行匹配,这是一种非常尴尬的“从左到右拖动名称匹配的位置”。有时它也被证明是缓慢的。更不用说维护起来很糟糕了。
简而言之:我正在寻找您将如何正确检查您的来源和目的地之间的差异?当每个字段都可以随时更改时。
谢谢。
解决方案
假设前面的评论是正确的,表格是否有一个“上次更新日期”列,每次插入/更新行时,日期值都会改变?如果是,那么您的 ETL 只需要选择“上次更新日期”大于 ETL 上次运行时间的行,然后使用两列 ID 和“上次更新日期”而不是所有 45 列来加入源和目标。
SSIS MERGE 组件当然适合这种情况,但公平警告它使用起来非常复杂。Sentry One(前 Pragmatic Works)第三方工具 Task Factory ($$) 也可以使用,并且使用起来不太复杂。
祝你好运。
推荐阅读
- groovy - Geb-core 3.2 与 groovy 2.5.8 冲突
- excel - 更改加载项用户窗体的父工作簿窗口
- python - 当我在 django 中使用“链”(多模型)时,有没有办法在搜索结果中添加分页器
- javascript - 无法从另一个函数中的回调函数接收返回值 [JavaScript]
- c++ - 唯一排列的总数
- android - 2 个活动 1 个按钮
- javascript - 对画布粒子应用随机旋转
- python - 在 SQLAlchemy 中以 dict 形式检索查询结果
- r - 如何在统计学习要素中获得图 5.3 上的 X 轴?
- sql - 什么会导致 ORA-01722:列类型为 NUMBER 时出现无效数字错误