【问题标题】:Informatica : something like CDC without adding any column in target tableInformatica:类似于 CDC 的东西,但在目标表中没有添加任何列
【发布时间】:2015-07-09 17:47:45
【问题描述】:

我在 oracle 中有一个名为 A 的源表。 最初,表 A 被加载(复制)到表 B 中 接下来我在 Table A 上操作 DML,如 Insert 、 Delete 、 Update 。

我们如何在表 B 中反映它? 无需在目标表中创建任何额外的列。 该行的时间戳不可用。

我必须比较源和目标中的行

例如:如果在源中删除了一行,那么它应该在目标中删除。 如果更新了一行,则在目标中更新,如果在源中不可用,则将其插入目标中。

请帮忙!!

【问题讨论】:

    标签: informatica informatica-powercenter cdc oracle-cdc


    【解决方案1】:

    以 A 和 B 为源。

    使用连接器进行完全外连接(或者如果两个表在同一个数据库中,您可以在 Source Qualifier 中连接)

    在表达式中根据以下场景创建一个标志。

    1. A键字段为null => flag='Delete',
    2. B键字段为null => flag='Insert',
    3. A 和 B 关键字段都存在 - 比较 A 和 B 的非关键字段,如果任何字段不相等,则将标志设置为“更新”,否则“无变化”

    现在您可以在使用更新策略应用适当的功能后将记录发送到目标(B)

    【讨论】:

      【解决方案2】:

      如果您不想保留在目标表中完成的操作(因为不允许额外的列),最快的方法就是 - 1) 截断 B 2)将A插入B

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-01-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-03-16
        相关资源
        最近更新 更多