Spoon实现跨库数据迁移

Spoon是个功能很强大的ETL工具,下面使用spoon来实现不同数据库之间数据迁移的小demo。在此过程中遇到了数据迁移后出现中文乱码的问题,在结尾处我会列出中文乱码的问题和解决方法。

首先打开Spoon后创建一个转换
接着在转换里创建两个数据库连接,这里分别创建了mysql和oracle的连接。
然后把表输入插入/更新 拖到右边空白区域。
Spoon实现跨库数据迁移_第1张图片

双击表输入,对表输入进行编辑
点击获取SQL查询语句,在弹出的数据库浏览器页面里找到目标表。
Spoon实现跨库数据迁移_第2张图片

双击插入/更新,对插入/更新进行编辑,数据库连接选择mysql_db,因为我们准备把oracle里的数据迁移到mysql数据库里。
Spoon实现跨库数据迁移_第3张图片

点击目标表旁边的浏览按钮,将弹出数据库浏览器窗口,在窗口里找到迁移的目标表,然后点击确定。
Spoon实现跨库数据迁移_第4张图片

接下来开始对两个数据库表的字段进行编辑映射,如果两个数据库中的表结构相同,则可以直接点击获取更新字段,如果两个数据库中的表结构不相同,可以通过手动编辑字段之间的映射关系。
Spoon实现跨库数据迁移_第5张图片

编辑映射,这个功能很好用,如果字段名称相同,spoon可以自动帮我们实现映射关系。
Spoon实现跨库数据迁移_第6张图片

编辑迎神完成后。
Spoon实现跨库数据迁移_第7张图片

点击开始运行,运行结束后,去mysql数据库查看是否有数据同步过来。
Spoon实现跨库数据迁移_第8张图片

数据已经同步过来了。
Spoon实现跨库数据迁移_第9张图片

下面是我遇到的中文乱码问题

没做任何设置之前,迁移后查看mysql表里面的数据中文被?号代替了。
Spoon实现跨库数据迁移_第10张图片

在创建数据库连接那里修改mysql_db连接的参数
选项那里添加参数characterEncoding=utf8 ,如下图所示
Spoon实现跨库数据迁移_第11张图片

修改后运行
Spoon实现跨库数据迁移_第12张图片

乱码变成了上图这个样子,看来问题还是没有解决。

上网查了后进行如下修改,问题解决!
找到spoon解压目录下的spoon.bat文件,打开该文件对其进行编辑,在

if "%PENTAHO_DI_JAVA_OPTIONS%"=="" set PENTAHO_DI_JAVA_OPTIONS="-Xms1024m" "-Xmx2048m" "-XX:MaxPermSize=256m"

后面加上下面这句

“-Dfile.encoding=UTF-8”

如图
Spoon实现跨库数据迁移_第13张图片

修改完成保存后,重新启动Spoon,然后运行作业,去mysql数据库查看数据,发现mysql数据库中的中文正常了。

你可能感兴趣的:(spoon)