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

kettle整合redis集群传数据 kettle数据同步_数据

 

 

 

 

 

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

 

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

kettle整合redis集群传数据 kettle数据同步_数据源_02

 

 

 

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

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

kettle整合redis集群传数据 kettle数据同步_字段_03

 

 

 

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

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

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

kettle整合redis集群传数据 kettle数据同步_kettle整合redis集群传数据_04

 

 

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

kettle整合redis集群传数据 kettle数据同步_数据源_05

 

 

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

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

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

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

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

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

kettle整合redis集群传数据 kettle数据同步_数据源_06

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

kettle整合redis集群传数据 kettle数据同步_数据_07

 

 

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

 

 

 

 

kettle整合redis集群传数据 kettle数据同步_数据_08

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

kettle整合redis集群传数据 kettle数据同步_数据_09

 

 

 

 

 

 

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

kettle整合redis集群传数据 kettle数据同步_数据源_10

 

 

 

 

 

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

kettle整合redis集群传数据 kettle数据同步_数据_11

 

 

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