1 组件介绍
插入/更新组件能够将Kettle抽取的数据,与某个表的数据进行对比,如果数据存在就更新,不存在就插入。
2 需求
修改 t_user中的张三这一行数据,修改age为80
同时,我们想要使用Kettle将 t_user1 中的张三这一行数据的age也修改为80。
3 测试之前开发的t_user_to_t_user1转换
我们是否能够使用 t_user_to_t_user1.ktr转换来进行数据的同步呢?
直接执行转换,我们发现,Kettle又将t_user表中的数据新增到了t_user1表中
说明,表输入组件根本无法同步数据,只是将抽取到的数据,装载到指定的表中。
4 恢复数据
为了方便后续的测试,我们需要恢复 t_user1中的数据。
4.1 清空 t_user1 中的数据
5 构建Kettle数据流图
效果图:
开发步骤
1 拖入一个表输入组件,用于读取 t_user 表中的数据。
2 从输出中拖入「插入/更新」组件。
3 将两个组件连接起来。
6 配置Kettle数据流图中的组件
6.1 配置表输入组件
1 双击表输入组件,点击获取SQL查询语句,选择 t_user表。
2 点击 预览按钮,查看Kettle是否能够从MySQL中读取数据。
6.2 配置插入/更新组件
1 双击 插入/更新 组件,点击浏览按钮,找到 t_user1 表。
2 添加用来查询的关键字,设置表字段为:id,比较符为:=,流里的字段为:id。
3 点击「获取和更新字段」,这样Kettle将会自动更新、或插入所有的字段。
7 保存并启动执行Kettle转换
7.1 保存并启动该Kettle转换。
7.2 执行完后,打开刷新 t_user1 表格,发现张三的年龄已经更新为80。
注:我们可以往 t_user 中添加一条数据,然后再执行Kettle转换,再用DataGrip查看 t_user1 表中是否也插入了一条数据。