最近在项目重构,重构过程中对数据库旧表进行重新设计,去掉一些无用的字段,且新表加入了一些新的字段,现在需要把旧的数据迁移到新的表中,经过一番的折腾,最终选择Kettle(Spoon)实现跨库跨表,迁移不同表结构的数据,此文希望对有类似需求的小伙伴提供一点帮助。

一、Kettle(Spoon)安装及配置

  1. JDK环境配置,不会配置请自行百度JDK配置教程。
  2. Kettle(Spoon)安装
    直接进入Kettle(Spoon)官网下载最新版本,官网地址:https://community.hitachivantara.com/docs/DOC-1009855
  3. etl作业 python etl作业 不同数据库转换_Kettle

  4. 配置 Kettle(Spoon)运行环境
    创建用户变量,变量名输入:PENTAHO_JAVA_HOME;
    变量值输入jdk的安装路径。
  5. etl作业 python etl作业 不同数据库转换_数据迁移_02

  6. 解压下载好的 Kettle(Spoon)工具
  7. etl作业 python etl作业 不同数据库转换_数据迁移_03


  8. etl作业 python etl作业 不同数据库转换_Spoon_04

  9. 导入mysql连接驱动(这里以mysql为例)
    在解压路径的lib文件夹下加入mysql驱动包即可。
  10. etl作业 python etl作业 不同数据库转换_Kettle_05

  11. 启动 Kettle(Spoon)
    解压文件之后,双击Spoon.bat即可启动 Kettle(Spoon)。
  12. etl作业 python etl作业 不同数据库转换_数据迁移_06


  13. etl作业 python etl作业 不同数据库转换_数据迁移_07

  14. 启动后的Kettle(Spoon)。
  15. etl作业 python etl作业 不同数据库转换_Spoon_08

二、Kettle(Spoon)迁移不同库不同表结构的数据

  1. 建立转换
  2. etl作业 python etl作业 不同数据库转换_数据迁移_09

  3. 建立源数据库连接
  4. etl作业 python etl作业 不同数据库转换_etl作业 python_10


  5. etl作业 python etl作业 不同数据库转换_Kettle_11

  6. 再次建立目标数据库连接
  7. etl作业 python etl作业 不同数据库转换_etl作业 python_12


  8. etl作业 python etl作业 不同数据库转换_Kettle_13

  9. 新建表输入
    从左边面板“核心对象”中选择“输入—>表输入”,鼠标拖拽到右边面板中,如图所示:
  10. etl作业 python etl作业 不同数据库转换_etl作业 python_14

  11. 双击表输入,编辑源库信息
  12. etl作业 python etl作业 不同数据库转换_数据迁移_15

  13. 阅览一下连接是否正确
  14. etl作业 python etl作业 不同数据库转换_Kettle_16

  15. 如上图:若出现报错提示,需要在Spoon的数据库连接中,打开选项,加入一行命令参数:
    zeroDateTimeBehavior=convertToNull,操作如下:
  16. etl作业 python etl作业 不同数据库转换_数据迁移_17

  17. 新建表输入
    在“核心对象”中,选择“输出—>插入/更新”,鼠标拖动至右边面板。
  18. etl作业 python etl作业 不同数据库转换_Kettle_18

  19. 编辑插入/更新
    首先将表输入连接插入/更新(选中表输入,按住shift键,拖向插入/更新)。
  20. etl作业 python etl作业 不同数据库转换_数据迁移_19

  21. 然后,双击插入/更新进行编辑,如图:
  22. etl作业 python etl作业 不同数据库转换_Spoon_20


  23. etl作业 python etl作业 不同数据库转换_Spoon_21

  24. 删除更新字段中目标表没有的字段。
  25. etl作业 python etl作业 不同数据库转换_字段_22

  26. 源表与目标表中字段意义相同,但是字段名不同的字段可以手动进行映射。
  27. etl作业 python etl作业 不同数据库转换_数据迁移_23

  28. 执行数据迁移
  29. etl作业 python etl作业 不同数据库转换_字段_24

  30. 数据迁移完成。
  31. etl作业 python etl作业 不同数据库转换_Spoon_25