最近在项目重构,重构过程中对数据库旧表进行重新设计,去掉一些无用的字段,且新表加入了一些新的字段,现在需要把旧的数据迁移到新的表中,经过一番的折腾,最终选择Kettle(Spoon)实现跨库跨表,迁移不同表结构的数据,此文希望对有类似需求的小伙伴提供一点帮助。
一、Kettle(Spoon)安装及配置
- JDK环境配置,不会配置请自行百度JDK配置教程。
- Kettle(Spoon)安装
直接进入Kettle(Spoon)官网下载最新版本,官网地址:https://community.hitachivantara.com/docs/DOC-1009855 。 - 配置 Kettle(Spoon)运行环境
创建用户变量,变量名输入:PENTAHO_JAVA_HOME;
变量值输入jdk的安装路径。 - 解压下载好的 Kettle(Spoon)工具
- 导入mysql连接驱动(这里以mysql为例)
在解压路径的lib文件夹下加入mysql驱动包即可。 - 启动 Kettle(Spoon)
解压文件之后,双击Spoon.bat即可启动 Kettle(Spoon)。 - 启动后的Kettle(Spoon)。








二、Kettle(Spoon)迁移不同库不同表结构的数据
- 建立转换
- 建立源数据库连接
- 再次建立目标数据库连接
- 新建表输入
从左边面板“核心对象”中选择“输入—>表输入”,鼠标拖拽到右边面板中,如图所示: - 双击表输入,编辑源库信息
- 阅览一下连接是否正确
- 如上图:若出现报错提示,需要在Spoon的数据库连接中,打开选项,加入一行命令参数:
zeroDateTimeBehavior=convertToNull,操作如下: - 新建表输入
在“核心对象”中,选择“输出—>插入/更新”,鼠标拖动至右边面板。 - 编辑插入/更新
首先将表输入连接插入/更新(选中表输入,按住shift键,拖向插入/更新)。 - 然后,双击插入/更新进行编辑,如图:
- 删除更新字段中目标表没有的字段。
- 源表与目标表中字段意义相同,但是字段名不同的字段可以手动进行映射。
- 执行数据迁移
- 数据迁移完成。

































