kettle从入门到精通 第六十五课 ETL之kettle 执行动态SQL语句,轻松实现全量&增量数据同步

本次课程的逻辑是同步t1表数据到t2表,t1和t2表的表机构相同,都有id,name,createtime三个字段。 

CREATE TABLE `t1` (
   `id` bigint NOT NULL AUTO_INCREMENT,
   `name` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
   `createtime` datetime DEFAULT NULL,
   PRIMARY KEY (`id`)
 ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci

1、之前的课程有介绍过单个转换的全量和增量数据同步,今天我们一起学习下通过trans来实现将增量和全量合二为一。这里面重点用到了执行Dynamic SQL步骤,如下图所示:

 

 2、查询目标表t2中的表记录总条数,若总条数为0表示没有进行同步过,需要进行全量同步,否则进行增量同步。这里增量同步的逻辑是通过两个表的id进行比对,当然也可以通过业务时间字段进行比对。

 3、使用javascript脚本步骤动态构建sql语句,根据maxId值进行编写逻辑,如下图所示:

 4、使用执行Dynamic SQL步骤执行前面构建的sql语句。

1)SQL field name:动态sql语句字段。

2)Template SQL:我个人理解就是字段设置别名方便步骤后续使用。

 5、表输出步骤将数据写入t2表。

 

 

posted @ 2024-06-04 21:59  慕容尘轩  阅读(168)  评论(0编辑  收藏  举报