1 kettle安装及运行

kettle官网下载地址,下载完毕后大概有800多m

kettle抽取数据库到kafka kettle抽取oracle数据_kettle


下载完毕后,直接解压,双击Spoon.bat进行运行。

kettle抽取数据库到kafka kettle抽取oracle数据_mysql_02


如果在你的电脑上启动之后,没有进入下面的页面,那么就换台机器。修改 Spoon.bat中java内存参数不一定好使。

if "%PENTAHO_DI_JAVA_OPTIONS%"=="" set PENTAHO_DI_JAVA_OPTIONS="-Xms1024m" "-Xmx2048m" "-XX:MaxPermSize=256m"

kettle抽取数据库到kafka kettle抽取oracle数据_kettle抽取数据库到kafka_03


2 数据库连接

将数据从oracle迁移到mysql,需要先在kettle中建立oracle和mysql数据库连接,注意mysql-connector-java-5.1.45.jarojdbc14-10.2.0.1.0.jar要在kettle启动之前拷贝进去。

2.1 mysql

mysql-connector-java-5.1.45.jar拷贝到data-integration\lib目录下

kettle抽取数据库到kafka kettle抽取oracle数据_kettle_04


按照下图操作,输入相关的数据连接参数

kettle抽取数据库到kafka kettle抽取oracle数据_kettle抽取数据库到kafka_05


配置字符集

kettle抽取数据库到kafka kettle抽取oracle数据_mysql_06


2.2 oracle

ojdbc14-10.2.0.1.0.jar拷贝到data-integration\lib目录下

kettle抽取数据库到kafka kettle抽取oracle数据_kettle抽取数据库到kafka_07


按照下图操作,输入相关的数据连接参数

kettle抽取数据库到kafka kettle抽取oracle数据_kettle抽取数据库到kafka_08


3 最基本的导数据

导入数据的基本流程如下图,可以分为三个步骤,首先建立源数据库和目标数据库的连接,然后建立源数据表和目标数据表的映射关系,最后建立作业任务,执行。

kettle抽取数据库到kafka kettle抽取oracle数据_kettle_09


3.1 建立DB连接

这个在上面第2章已经将做如何配置了。

3.2 建立steps

这一步实现源数据库和目标数据表的映射关系,它也有三个步骤

3.2.1表输入

第一步:在【转换】里面,选择【核心对象】,接着双击【表输入】,或者选中将【表输入】拖拽到右侧空白区域。

kettle抽取数据库到kafka kettle抽取oracle数据_拖拽_10


第二步:双击你拖进来的【表输入】,修改“步骤名称”,选择源数据,点击获取【获取SQL查询语句】,选择你想同步的表,点击确定后,就可以了。当然你也可以自己写sql语句

kettle抽取数据库到kafka kettle抽取oracle数据_mysql_11


3.2.2 字段选择

第一步:在【转换】里面,拖拽【字段选择】到右侧空白区域。

第二步:按住shift 拖动鼠标连接【客户基本信息输入】和 【字段选择】

第三步:双击【字段选择】,添加【列映射】,建立源表和目标表中列字段的映射,如果字段名称相同,kettle会自动帮你选择,如果不同,则需要你自己选择对应关系

kettle抽取数据库到kafka kettle抽取oracle数据_kettle_12


下图是匹配完成,点击确定后的结果。

kettle抽取数据库到kafka kettle抽取oracle数据_mysql_13


第四步:这一步可选,当源数据字符集与目标字符集不同的时候需要做字符转换,如果一致,则直接跳过这一步

kettle抽取数据库到kafka kettle抽取oracle数据_kettle_14


3.2.3 表输出

第一步:在【转换】拖拽【表输出】到右侧空白区域,按住shift 拖动鼠标连接【字段选择】和【基本信息输出】

kettle抽取数据库到kafka kettle抽取oracle数据_mysql_15


第二步:双击【表输出】,修改“步骤名称”,选择“数据库连接”,选择“目标表”,

kettle抽取数据库到kafka kettle抽取oracle数据_mysql_16


第三步:获取字段,因为在【字段选择】中已经做了匹配,所以这里可以全选,kettle可以帮你全部选择

kettle抽取数据库到kafka kettle抽取oracle数据_字段_17


第四步: ctrl+s 保存 ktr文件

4 建立作业

按照下图新建作业

kettle抽取数据库到kafka kettle抽取oracle数据_字段_18


4.1 设置START

拖拽【START】到右侧空白区域

kettle抽取数据库到kafka kettle抽取oracle数据_kettle_19


4.2 配置作业转换

第一步:拖拽【转换】到右侧空白区域,并按住shift 拖动鼠标连线

kettle抽取数据库到kafka kettle抽取oracle数据_字段_20


第二步:选择第3章保存的ktr文件,保存即可。

kettle抽取数据库到kafka kettle抽取oracle数据_拖拽_21


第三步:手工运行作业,点击下图红色圈圈里面的按钮

kettle抽取数据库到kafka kettle抽取oracle数据_拖拽_22


进入下面的页面,点击【执行】就可以了。

kettle抽取数据库到kafka kettle抽取oracle数据_kettle抽取数据库到kafka_23


查看日志,下面的是结果正常的。如果有错,kettle会提示你错误原因。

kettle抽取数据库到kafka kettle抽取oracle数据_kettle_24


4.3 定时执行

如果不想立即执行,那么可以选择制定的规则,让kettle定期执行。具体操作,可双击【START】,更改“类型”,下图示例是制定每天的具体时刻。

kettle抽取数据库到kafka kettle抽取oracle数据_字段_25


运行的时候,选择Start Job at 就可以了。

kettle抽取数据库到kafka kettle抽取oracle数据_拖拽_26


你会发现画风会停到下面这里

kettle抽取数据库到kafka kettle抽取oracle数据_拖拽_27


跟踪日志,你会发现它会按照我设置的时间开始执行

kettle抽取数据库到kafka kettle抽取oracle数据_kettle抽取数据库到kafka_28


参考资料

KETTLE 从oracle将表导入mysqlKettle数据抽取(转换)出现乱码问题解决方法