Kettle是一款国外开源的ETL工具,纯java编写,可以在Window、Linux、Unix上运行,高效稳定。(源自百度百科)
1.使用场景
a.不同服务器数据库之间数据同步,或者数据库数据导出的应用
b.定时任务
2.简单使用kattle进行数据合并+更新+删除+新增
下载好kettle,打开spoon.bat,纯java的工具所以需要jre环境,在此不在赘述.见图1

打开工具后,软件的欢迎页面.右边俩个tab菜单,一个是创建的应用面板,一个是应用的工具对象,图2

现在创建一个转换应用,并且新建DB连接.保存一下这个应用的名称.图3

建好俩个数据库的连接之后就可以进行步骤这一块的操作了.图4

新增2个不同库的表输入步骤(在核心对象菜单中拖拽到面板中就可以),因为是2个不同的库,所以在同步时要注意表的列数和列定义的类型.图5,6

上图这个是新的表输入数据要和旧数据进行合并,选择好数据库连接

上图是旧数据表输入,对应新数据表的2个列.
合并俩个 数据源,新增一个合并记录对象.并且设置好新旧数据库,已经需要比对的字段.图7

上图的右侧填写的是新数据源列,左侧是旧数据源列,关键字即是主键,比对的是第二列的值是否变化
进行debug操作一下 俩个数据的变化.如果有增/删/改 关键字就会有不同的提示.图8

添加一个表输出对象.用于存储合并后的数据列表.图9

选择好表名和数据库连接,勾选存储表名字段,debug进行预览.图10

上图步骤中的数据和合并记录步骤的预览记录并没有什么区别.
添加一个条件判断对象(switch case),依据表输出的diff标识值进行下一步操作.图11

上图的switch字段是表输出步骤中表的比对列,case值是比对列的值,目标步骤是下一步进行的工作.图12

上图是根据不通的值进行不同操作.有删除和更新,以及插入和默认情况.
删除步骤:

更新

插入

不操作,添加一个无操作输入.
总结:整个流程实现了不同数据库中对同一批数据的增/删/改操作.kattle

网友评论
推荐下,分库分表中间件 Sharding-JDBC 源码解析 17 篇:http://t.cn/R0UfGFT
壕