一、问题

1.1、环境
电脑环境:Windows 10;
开发工具:IntelliJ IDEA;
数据库环境:Redis 3.2.100
JDK环境: Jdk1.8;

1.2、问题
如何使用Spoon工具,讲A数据库的demo表,迁移到B数据库的demo2表?以MySQL为例
1、字段名不一致如何处理;
2、字段类型不一致如何处理;
3、字段长度不一致如何处理;
4、多个字段对应1个字段如何处理;
5、A库demo表某字段为空如何处理;

官方文档地址 英文好的朋友可以去看看;

二、解答

1、首先,我们要下载kettle spoon工具,下载地址 解压后,是下面的样式:

kettle spoon java代码组件使用 kettle工具spoon_数据库


2、选择需要连接的类型,并且将对应的驱动jar包下载下来,放到解压spoon工具的lib文件夹下;

如果你没有下载对应的jar包,或者jar包下错了,测试连接的时候就会报错如下,这个是后话:

kettle spoon java代码组件使用 kettle工具spoon_数据迁移_02

3、下载spoon需要的MySQL驱动jar包,我们去 Maven Repository 下载

4、我们双击运行spoon.bat文件,可以看到启动界面如下,启动有点慢,请耐心等待:

kettle spoon java代码组件使用 kettle工具spoon_kettle_03


5、点击左侧的【输入】文件夹,选择表输入:

kettle spoon java代码组件使用 kettle工具spoon_数据迁移_04

kettle spoon java代码组件使用 kettle工具spoon_spoon_05


如果你报错如下:

kettle spoon java代码组件使用 kettle工具spoon_数据迁移_02


说明你的mysql的jar包版本太高了,建议切换到5.1.15版本,下载地址 这样数据库就连接上了;这里,我连接两个数据库后,一直报错:

kettle spoon java代码组件使用 kettle工具spoon_数据库_07


查看了一个帖子,得知了是MySQL版本的问题,博客地址 我们根据博客建议,讲MySQL的版本提升到 mysql-connector-java-5.1.25.jar

然后我们在添加一个插入、更新表数据的目标配置信息;晚上目的地数据库地址,模式(schema),表明;(这里我反了一个错误,就是没有匹配字段!!!)

但是还是不行,后来发现,kettle不会给你匹配默认的字段,我们必须自己手动精确到字段,即使是相同的表也不可以,程序增明知道你的两个表字段是一样的呢?所以我们要手动匹配下,控制精度到字段级别;

kettle spoon java代码组件使用 kettle工具spoon_kettle_08


执行下就OK了;

参考地址:
参考地址: