我目前正在学习有关SSIS的方法。而且我正在寻找做某事的更好方法。
我正在将数据从Oracle数据库加载到SQL Server。
Oracle数据已加载,转换和排序。 SQL Server数据也已加载,排序。
然后将这些放入合并联接(外部)中。
然后发生条件分裂; 如果密钥不在源中,而是在目标中。记录被删除(实际上已存档)。 如果密钥在源中,而不在目标中。记录将沿着要插入的路径发送。
如果它们的键都存在。然后将其发送到另一条路径-这是我的问题所在。
该表有45个字段(不是我的决定!),如果有任何更改,我需要更新记录。目前,我使用“查找”,以一种棘手的尴尬“将名称匹配的位置从左向右拖动”来匹配每个存在的字段。有时也证明它很慢。更不用说可怕的维护了。
简而言之:我在寻找一种方法来正确检查源与目的地之间的差异?当每个字段都可以随时更改时。
谢谢。
答案 0 :(得分:0)
这是在现场-感谢Veljko89
来源:Union All returns duplicates???
解决方案: 您可以通过两个步骤在SSIS中完成此操作:
答案 1 :(得分:0)
假设上一条注释正确无误,该表是否具有“上次更新日期”列,该列的值在每次插入/更新行时都会更改?如果是,那么您的ETL只需要选择'Last Updated Date'大于上一次ETL运行的行,然后使用两列ID和'Last Updated Date'代替所有45列来加入源和目标。
SSIS MERGE组件当然适用于这种情况,但是警告它使用起来非常复杂。 Sentry One(以前为Pragmatic Works)的第三方工具Task Factory($$)也可以使用,使用起来也不那么复杂。
祝你好运。