为了研究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是只读表时或分析备份表时,这种同步基本可以达到要求。