kettle基本操作2:使用日期字段分批次同步数据
0.前言
在同步大表的时候,如果数据量大,需要分批次进行同步,使用分页是一种方法,如果原表中是有Date字段的话,可以按日期进行同步。本次kettle同步使用日期搭建同步的工作流,主要的思路如下:
- 清空目标表
- [转换]获取日期分组的数据;
- [转换]分批写数据到目标表;
1.设计步骤
(1)主工作流
主工作流的设计如下:

(2)truncate目标表
这个节点只是一个sql的脚本,相对简单,设置如下:

(3)[转换]获取分组数据
这是一个转换,转换的节点只有两个,表输入组件只是简单对日期字段last_login_time进行grouy by,并复制结果,如下:

- 表输入
![image]()
SELECT last_login_time FROM dcs_user group by last_login_time order by last_login_time;
- 复制记录到结果
这个设置没什么好介绍的,图都懒得放。
(4)[转换]分批写数据到目标表
这个转换节点必须勾选"执行每一个输入行",意思是,上一个节点会输出多行数据(即每一个日期),此数据将逐行输入"分批写数据到目标表"这个节点,这是实现循环读取数据的关键配置。

以下是这个转换的具体设计:

-
从结果获取记录
设置从上一个结果集获取的数据字段名,及其数据类型:
![image]()
-
字段选择
字段选择主要是根据需要做一些格式设置,如结果集获取的数据格式可能是yyyy/MM/dd,可通过此组件将格式设定为'yyyy-MM-dd',方便传入SQL语句。如果是需要设定格式的,需要在此节点的"元数据"选项中进行设置。
![image]()
-
表输入
从源表按分组依据的last_login_time字段爱批次读取数据。表输入的SQL语句中的参数可以使用变量传递,也可直接使用上一节点的字段(PS:这里使用变量传递我没有实验成功,再议~~),设置如下:
![image]()
SELECT username,real_name,last_login_time FROM dcs_user WHERE last_login_time = ?;
- 表输出
设置如下:
![image]()





浙公网安备 33010602011771号