概述

  • 关系型数据库如 OracleMySQLsqlserver 等之间数据同步
  • 从关系型数据库导出到 Excel
  • 支持数据转换:比如字典转换,text 与 value 间转换
  • 配置定时任务,定时同步

官网

Kettle

kettle中文网

kettle入门实战 - 知乎 (zhihu.com)

下载

kettle7.1官网下载地址

Kettle其他版本下载地址

安装

  1. 将下载后的「pdi-ce-7.1.0.0-12.zip」文件解压得到 「data-integration7.1」
  2. 进入文件夹 「data-integration7.1」
    1. Windows系统 找到「Spoon.bat」
    2. Linux/Mac系统 找到「spoon.sh」
  3. 运行 Spoon 脚本文件即可启动 Kettle

使用

数据同步配置

使用 Kettle 完成将 MySql 数据库中某表中的数据传输到 Oracle 某表

  1. 配置数据源

    配置源数据库和目标数据库

    1. 找到左侧「主对象树」中的「DB连接」双击打开弹窗

    2. 在弹窗中填写连接信息,点击测试成功后,点击确认

      连接方式:Native (JDBC)

    3. 将用到的数据源都配置完毕后进行下一步骤

  2. 新建转换

    点击头部菜单「文件」「新建」「转换」 即可创建一个转换程序

  3. 配置表输入

    表输入的理解:源数据库,从数据库表里读取信息。单张表

    1. 点击左侧「核心对象」找到「输入」中的「表输入」,双击或者拖动到右侧的转换主界面,双击主界面的「表输入」
    2. 选择数据库连接「这里选择MySQL」,点击「获取SQL查询语句」弹出「数据库浏览器」窗口,选择需要同步的表,即可生成SQL语句
    3. 上面步骤完毕,检查获取的SQL语句正确,即可点击确定保存
  4. 配置表输出

    表输出的理解:目标数据库,写信息到一个数据库表。单张表

    1. 点击左侧「核心对象」找到「输出」中的「表输出」,双击或者拖动到右侧的转换主界面,双击主界面的「表输入」
    2. 选择「数据库连接」这里选择Oracle,选择「目标模式」,选择「目标表」,勾选「指定数据库字段」
    3. 在下方「数据库字段」一栏中点击「输入字段映射」,弹出弹窗可进行字段映射配置
    4. 配置完毕点击确定即可完成表输出配置
  5. 保存转换文件

    表输入—>表输出(按住shift,鼠标点击“表输入”向“表输出”拖动,即可连接为一条线)

    CTRL+S 保存 .ktr 格式的文件

  6. 执行转换文件

    点击转换主界面左上角的执行图标即可

    运行时要注意,每个步骤之间的连接线必须为有效的『蓝色实线』,灰色线或无连接线可能导致执行失败

值映射

在进行输入输出同步的过程中,可能会遇到某些字段的转换。比如 需要在执行转换的同时自动将汉字应为特定标识,可使用“值映射”

例:输入表中的性别“男”、“女”对应输出表的“1”、“0”

一个值映射对应一个字段的转换,多个字段需要转换时,则配置多个值映射

  1. 继上次保存的转换程序操作

  2. 在左侧的「核心对象」中找到「转换」下的「值映射」,鼠标将其拖动到「表输入」与「表输出」中间连线的部位,提示「拆分节点」,选择「是」即可。多个字段可创建多个映射,如下图所示:

    image-20211025175727328
  3. 双击主界面的「值映射」进行配置,根据业务需求选择或填写「使用的字段名称」「不匹配时的默认值」『字段值「源值」「目标值」』等信息,点击确定
    具体如下图所示:

    image-20211025175753293
  4. 运行转换

删除操作

执行数据同步前需要对输出表的旧数据进行删除操作,可基于关键字删除

  1. 继上次保存的转换程序操作
  2. 在左侧的「核心对象」中找到「输出」下的「删除」,鼠标将其拖动到「表输入」之前并连线
  3. 双击主界面的「删除」打开弹窗,上方配置数据源,下方「查询值所需的关键字」一栏中可配置删除条件
  4. 运行转换

定时任务

定时执行某个转换流程文件

  1. 新建作业

    点击头部菜单「文件」「新建」「作业」 注意这里跟上面不一样这里是 新建作业

  2. 配置定时任务

    1. 找到左侧「核心对象」树下「通用」中的『「START」「转换」』分别拖动到作业主界面,并将两者连线

    2. 双击 「START」 图标 ,在类型中可以选择是否需要定时执行,如下图所示

      image-20211025180520371
    3. 双击转换进行配置,在「Transformation」一行点击「浏览」选择要执行的 .ktr 转换文件

      image-20211025180603140
  3. 运行作业

注意事项

  1. Mac/Linux 可能出现闪退启动失败

    可尝试下载最新的 eclipse.swt 包,替换 kettle 中的原文件

    将下载好的文件重命名 swt.jar 下载地址

    替换 data-integration7.1/libswt/osx64/swt.jar

  2. 连接数据库时出现驱动异常等情况

    MySQL 驱动地址 mysql-connector-java

    Oracle 驱动地址 ojdbc6

    将下载好的驱动放在 data-integration7.1/lib/ 下即可

    不同的数据源可能使用驱动的版本有所差别,建议下载使用适合自己版本的驱动

参考

  1. 入门:分享一个简单好用的ETL工具:PDI(Kettle)
  2. 进阶:Kettle实战视频教程-全部为实战项目