Kettle之数据同步(篇二)

为了研究Kettle的输出下的“数据同步”功能点,特做了如下动作以验证此功能作用。

1、创建表AA,作为旧数据源,即目标数据

CREATE TABLE [dbo].[AA](
    [code2] [nvarchar](50) NULL,
    [companyName2] [nvarchar](50) NULL,
    [createDate] [datetime] NULL,
    [updateDate] [datetime] NULL
) 

2、创建表AB,作为新数据源,即来源数据

CREATE TABLE [dbo].[AA](
    [code2] [nvarchar](50) NULL,
    [companyName2] [nvarchar](50) NULL,
    [createDate] [datetime] NULL,
    [updateDate] [datetime] NULL
) 

3、创建表AC,用于存储“合并记录”过程中产生的处理记录

CREATE TABLE [dbo].[AA](
    [code2] [nvarchar](50) NULL,
    [companyName2] [nvarchar](50) NULL,
    [createDate] [datetime] NULL,
    [updateDate] [datetime] NULL
) 

4、拖入一个“表输入"框,命名为”表输入-AA“,表输入中的SQL的列名可以用别名;记录数量限制为0,表示查询所有数据。

 5、拖入一个“表输入"框,命名为”表输入-AB“,表输入中的SQL的列名可以用别名;记录数量限制为0,表示查询所有数据。

6、拖入一个“合并记录"框,选择AA为旧数据源,AB为新数据源,标志字段flagfield表示,将新数据源与旧数据源按关键字比较时,比较的状态值,

标志字段的值有4种,分别是:

Identical” : 关键字段在新旧数据源中都存在,且域值相同

“changed” : 关键字段在新旧数据源中都存在,但域值不同

new” :  旧数据源中没有找到该关键字段

deleted”:  新数据源中没有找到关键字段

7、拖入一个“表输出"框,命名为”表输入-AC“,将合并记录的数据输出到表AC中,用于查看“合并记录”这个过程。

8、拖入一个“数据同步"框,命名为”数据同步-AD“,将合并记录的数据输出到表AA中,用于查看“合并记录”这个结果。

注意,这个高级里,表示执行数据同步时,所要执行的CURD动作,若是”当值相等时删除“里,不填写deleted,那么新数据源中与旧数据源比较时,若新数据中没有这条记录,那么在同步的目标表中是不会执行删除动作的。

9、执行后,AC表中的结果数据如下,表示”合并执行“的动作。

10、执行后,AA表中的结果数据如下,表示”合并执行“的结果。01记录已删除,02 记录不变,03记录更新,04记录新增插入。

 11、上述步骤数据同步完成,可以达到AA表  AB表的数据一致。 应用场景: 当AB是动态的写入表时,AA是只读表时或分析备份表时,这种同步基本可以达到要求。

原文地址:https://www.cnblogs.com/sandyljg/p/13903562.html