前提条件:表中存在一个 int 类型的自增长的 id 主键,不存在数据删除的情况
原理:Kettle实现数据库表的数据同步是按照表的 id 主键值的大小来判断的,A表(数据多的表)中存在B表(数据少的表)中没有的数据,那么那些B表中新添加的表的主键肯定会比B表中的 id 值都要大,我们只需要把B表的 id 最大值获取到,然后和 A表的 id 进行比较,把那些 A表的id比从B表中查出来的最大值还要大的行传到 B表中即可,如果有点蒙,可以看下边的详细步骤。
A表(数据多的表)
B表(数据少的表)
1.把 B表(数据少的表)中的 id 最大值获取到
2.找到A表(数据多的表)中B表(数据少的表)没有的数据
SQL语句中的?指的是刚刚获取到的B表最大值,表输入下边的 “替换SQL语句里的变量” 勾选,“从步骤中插入数据”选择刚刚的那个表数据,勾选上 “执行每一行” 。如果 “从步骤中插入数据” 里边没有要选择的,说明对象之间没有连接
3.最后弄一个表输出就完事了(目标表是那个数据少的B表),如下
4.执行转换,数据表就更新完成了
执行成功
B表数据更新后