最近在做将老系统oracle数据库中的数据迁移到新系统MySQL数据库中,使用到了kattle这款工具。发现kattle很好用,将小编自己这几天对kattle学习到的使用方法和大家分享一下,给做数据迁移的同学提供一下参考。

kattle是什么:

kattle是国外的一款开源的ETL(将数据从来源段经过抽取,转换,加载至目的端的过程)工具。纯java编写,可以在Windows、Linux、Unix上运行,数据抽取高效稳定。

kattle可以用来做什么:

目前小编掌握到的,kattle可以用来做数据的迁移,相同数据库之间数据迁移,不同数据库之前数据迁移。

kattle怎么用:

1.下载kattle的安装包,data-intergation。无需安装,直接双击Spoon.bat启动即可。

kettle kafka 指定时间 kettle抽取数据到kafka_kettle kafka 指定时间

2.进入主页面

kettle kafka 指定时间 kettle抽取数据到kafka_kettle kafka 指定时间_02

在主对象树下,双击转换,创建新的转换任务,结果如下图:

kettle kafka 指定时间 kettle抽取数据到kafka_控件_03

3.在此点击主对象树,双击DB连接,添加迁移数据要连接的数据库。oracle库和MySQL库的连接方式如图。连接信息填写完成后,点击测试,弹出会话框,会提示连接是否成功。

kettle kafka 指定时间 kettle抽取数据到kafka_kettle kafka 指定时间_04

kettle kafka 指定时间 kettle抽取数据到kafka_控件_05

4.再次回到【核心对象】面板下,点开【输入选项】双击【表输入】,会在右侧的面板中添加【表输入】控件

kettle kafka 指定时间 kettle抽取数据到kafka_数据库_06

5.此处的表输入,是指将数据库中的数据输入到kattle中。

双击【表输入】,选择源数据库。然后点击【获取sql查询语句】选择要将源数据库中哪张表中的数据迁移出来。或者直接编写SQL语句,进行查询。如果新表和旧表中字段名称不一致,可以在写SQL查询语句的时候,直接给旧表的字段名重命名为新表的字段名,这样kattle就会自动和新表的字段名进行映射。

当需要将旧系统中的两张或者两张以上的表的数据整合到新系统中的一张表中的时候,可以写联合查询语句。

kettle kafka 指定时间 kettle抽取数据到kafka_字段_07

6.双击转换中的字段选择

kettle kafka 指定时间 kettle抽取数据到kafka_kettle kafka 指定时间_08

7.按住shift键,点击【表输入】,然后在点击【字段选择】,使用步骤将两者连接起来。

8.双击字段选择,点击【获取选择字段】

kettle kafka 指定时间 kettle抽取数据到kafka_数据库_09

9.如果当前的所获去的字段已经满足要求,则可以进行【表输出】了。

如图所示

kettle kafka 指定时间 kettle抽取数据到kafka_控件_10

表输出,有三个选项可以选择。【表输出】控件只会执行插入操作,【更新】控件只会进行更新操作。【插入/更新】控件,会按照指定的字段进行查询,存在就进行更新,不存在执行插入。【表输出】和【更新】比较简单,不做介绍,只说一下【插入/更新】如何使用,根据这个控件的使用就会知道【表输出和】和【更新】控件如何使用。

kettle kafka 指定时间 kettle抽取数据到kafka_控件_11

10.如果目前流中的字段还不满足要求,还需要再进行字段查询。可以选择【查询】菜单下的【数据库查询】控件

kettle kafka 指定时间 kettle抽取数据到kafka_kettle kafka 指定时间_12

双击【数据库查询字段】,进行配置。

kettle kafka 指定时间 kettle抽取数据到kafka_kettle kafka 指定时间_13

11.直到流里的字段满足要求后在进行输出

下图为我自己编写的步骤。供大家参考。

kettle kafka 指定时间 kettle抽取数据到kafka_控件_14