Kettle中通过触发器方式实现数据 增量更新
在使用Kettle进行数据同步的时候, 共有 1.使用时间戳进行数据增量更新 2.使用数据库日志进行数据增量更新 3.使用触发器+快照表 进行数据增量更新 今天要介绍的是第3中方法。 实验的思路是这样的,在进行数据同步的时候, 源数据表为A表, A表要对 目标表(target table) B 表和C表进行数据的同步更新。 即A表中的对应字段发生变化之后, 会通过触发器将对应变化的字段在A表中的主键值写入到一个临时表temp中(该表作为快照表使用)。 快照表中只有两个字段,一个是temp_id,是快照表的主键,另一个是 A_id,记录的是在A表中发生变化的字段对应的主键的值。 temp( temp_id int primary key auto_increment , A_id int ); 接下来,通过对快照表temp进行扫描,把在B表和C表中出现的与temp表中与A_id相匹配的字段, 从B,C两个目标表中进行移除。 在接下来,让A表作为源 让B和C作为目标 对B,C做插入/更新操作; 这样就实现了A表对B,C两个表的更新,在后续的操作中可以使用SQL语句将 temp表, 以及触发器进行 drop操作,以免其浪费内存资源。 在创建 trigger的时候,只要针对A表的 删除、 更新操作进行创建trigger 即可。 下面来分析一下,对A表进行的不同操作的情况: 1