Kettle-数据库同步
概述
- 关系型数据库如
Oracle
、MySQL
、sqlserver
等之间数据同步
- 从关系型数据库导出到 Excel
- 支持数据转换:比如字典转换,text 与 value 间转换
- 配置定时任务,定时同步
官网
下载
安装
- 将下载后的「pdi-ce-7.1.0.0-12.zip」文件解压得到 「data-integration7.1」
- 进入文件夹 「data-integration7.1」
- Windows系统 找到「Spoon.bat」
- Linux/Mac系统 找到「spoon.sh」
- 运行 Spoon 脚本文件即可启动 Kettle
使用
数据同步配置
使用 Kettle 完成将 MySql 数据库中某表中的数据传输到 Oracle 某表
配置数据源
配置源数据库和目标数据库
找到左侧「主对象树」中的「DB连接」双击打开弹窗
在弹窗中填写连接信息,点击测试成功后,点击确认
连接方式:Native (JDBC)
将用到的数据源都配置完毕后进行下一步骤
新建转换
点击头部菜单「文件」「新建」「转换」 即可创建一个转换程序
配置表输入
表输入的理解:源数据库,从数据库表里读取信息。单张表
- 点击左侧「核心对象」找到「输入」中的「表输入」,双击或者拖动到右侧的转换主界面,双击主界面的「表输入」
- 选择数据库连接「这里选择MySQL」,点击「获取SQL查询语句」弹出「数据库浏览器」窗口,选择需要同步的表,即可生成SQL语句
- 上面步骤完毕,检查获取的SQL语句正确,即可点击确定保存
配置表输出
表输出的理解:目标数据库,写信息到一个数据库表。单张表
- 点击左侧「核心对象」找到「输出」中的「表输出」,双击或者拖动到右侧的转换主界面,双击主界面的「表输入」
- 选择「数据库连接」这里选择Oracle,选择「目标模式」,选择「目标表」,勾选「指定数据库字段」
- 在下方「数据库字段」一栏中点击「输入字段映射」,弹出弹窗可进行字段映射配置
- 配置完毕点击确定即可完成表输出配置
保存转换文件
表输入—>表输出(按住shift,鼠标点击“表输入”向“表输出”拖动,即可连接为一条线)
CTRL+S 保存 .ktr 格式的文件
执行转换文件
点击转换主界面左上角的执行图标即可
运行时要注意,每个步骤之间的连接线必须为有效的『蓝色实线』,灰色线或无连接线可能导致执行失败
值映射
在进行输入输出同步的过程中,可能会遇到某些字段的转换。比如 需要在执行转换的同时自动将汉字应为特定标识,可使用“值映射”
例:输入表中的性别“男”、“女”对应输出表的“1”、“0”
一个值映射对应一个字段的转换,多个字段需要转换时,则配置多个值映射
继上次保存的转换程序操作
在左侧的「核心对象」中找到「转换」下的「值映射」,鼠标将其拖动到「表输入」与「表输出」中间连线的部位,提示「拆分节点」,选择「是」即可。多个字段可创建多个映射,如下图所示:
双击主界面的「值映射」进行配置,根据业务需求选择或填写「使用的字段名称」「不匹配时的默认值」『字段值「源值」「目标值」』等信息,点击确定
具体如下图所示:运行转换
删除操作
执行数据同步前需要对输出表的旧数据进行删除操作,可基于关键字删除
- 继上次保存的转换程序操作
- 在左侧的「核心对象」中找到「输出」下的「删除」,鼠标将其拖动到「表输入」之前并连线
- 双击主界面的「删除」打开弹窗,上方配置数据源,下方「查询值所需的关键字」一栏中可配置删除条件
- 运行转换
定时任务
定时执行某个转换流程文件
新建作业
点击头部菜单「文件」「新建」「作业」 注意这里跟上面不一样这里是
新建作业
配置定时任务
找到左侧「核心对象」树下「通用」中的『「START」「转换」』分别拖动到作业主界面,并将两者连线
双击 「START」 图标 ,在类型中可以选择是否需要定时执行,如下图所示
双击转换进行配置,在「Transformation」一行点击「浏览」选择要执行的 .ktr 转换文件
运行作业
注意事项
Mac/Linux 可能出现闪退启动失败
可尝试下载最新的 eclipse.swt 包,替换 kettle 中的原文件
将下载好的文件重命名 swt.jar 下载地址
替换 data-integration7.1/libswt/osx64/swt.jar
连接数据库时出现驱动异常等情况
MySQL 驱动地址 mysql-connector-java
Oracle 驱动地址 ojdbc6
将下载好的驱动放在 data-integration7.1/lib/ 下即可
不同的数据源可能使用驱动的版本有所差别,建议下载使用适合自己版本的驱动