kettle学习笔记
kettle学习笔记之数据同步
-
业务需求:
将库中数据同步到另一个数据库,实时性使用n+1策略,进行每天凌晨进行数据同步。其中包含增量的数据同步、编辑的数据修改同步以及物理删除的同步删除。 -
实现方案:
这里同步的数据分为两种
一种为基础数据,这种数据的数据量不会很大,实施全量的比对更新;
一种为业务数据,这种数据的数据量可能会很大,但是时间轴越长数据越不会被修改,这里实施一个月内的比对更新。
两种方案只是自己的查询sql不同,来实现全量还是部分数据。 -
功能实现:
1.下载并运行kettle
2. 新建配置文件,初始化变量值。
3. 新建两个数据源,并共享。
4. 新建转换:主要业务逻辑,实现数据同步。
5. 新建作业:引入转换,设置定时作业。
6. 出现异常实现发送邮件。
1. 下载kettle
这里使用的kettle为7.0版本,网盘下载地址:
链接:https://pan.baidu.com/s/1Z_9bvYqOX1n0-h-UH8qmLA
提取码:ucln
以及环境配置可以点击下方链接进行阅读。
2. 新建配置文件
新建 kettle.properties 文件,与 Spoon.bat 等文件在同一目录。
里面上可以设置数据库链接和初始化一些变量。
修改完配置文件要重启kettle才会生效。
3. 新建数据源并共享
在新建数据源之前要新建一个作业,这样才可以新建数据源。
在作业下面,右键DB链接,新建。在配置好数据源后,右键数据源,点击共享。
共享这里无法进行截图。
4. 新建转换
-
代码图如下:
-
代码执行逻辑:
新建两个表输入,获取到两张表的数据,比对关键字段为主键,合并记录,将结果值赋值给flagId,然后将flagId交有swish进行业务分发。
代码片段:
在更新和表输出的时候获取所有字段会带有flagId,而flagId只是我们的变量,表中并没有,要将这个属性从表字段中删除。
如果数据库设置了字段非空,并且给了defaulvalue为"",这种情况进行表输出会报空指针错误,要在配置文件中添加如下属性避免报错:KETTLE_EMPTY_STRING_DIFFERS_FROM_NULL=Y
5. 作业设置定时任务
双击START可以进行任务设置,右键START点击Run Next Entries in Parallel 可以进行多线程并发执行转换。
效果如下:
6. 任务异常执行发送邮件
以上为开发全部步骤,有需要的话还可以添加补偿机制,不同业务需要可以用不同场景进行实现,实现方法不一。