背景介绍

最近需要oracle数据库迁移数据到mysql数据库,用到了kettle spoon 工具,发现工具真的是很强大,好用,单表,多表都可以迁移,下面给大家分享一下使用的过程情况,仅供参考。

kettle spoon是Java语言编写,以图形化的界面来管理数据,并允许在不同数据库间迁移数据。 spoon软件解压后可直接运行,会自动检查Java环境,因此需要提前配置好环境。

工具介绍

本机的运行环境: JDK版本: 1.8 spoon版本:pdi-ce-8.2.0 软件的运行需要添加Java的数据库驱动包,在软件lib文件夹下,添加数据库驱动。 mysql-connector-java-5.0.8-bin.jar ojdbc6.jar   打开解压后的文件夹,找到并打开spoon.bat,进入spoon软件的界面。如下图所示。 在这里插入图片描述   双击转换,可以新建一个转换,设置操作数据库的控件。首先需要做以下两步。

第一步 新建DB连接

  DB连接右击,新建DB连接,以当前的需求为例,需要分别建立oracle和mysql两个数据库的连接。 在这里插入图片描述

第二步 数据库连接

  配置数据库的连接信息,数据库名称,账号,密码等,可以测试连接是否成功。下面是oracle数据库的连接。 在这里插入图片描述 改变编码方式(重要)   更改目标数据的编码方式,统一为utf8编码方式,否则会出现乱码。mysql数据库的连接的选项里,添加characterEncoding 设置编码方式为utf8。 在这里插入图片描述 数据的迁移可以分为单表的迁移和多表的迁移,两者的处理过程不同,下面将分别介绍。

1 单表迁移

  在核心对象,输入下找到表输入,拖动到工作区,同样在输出下,找到表输出,拖动到工作区。在表输入控件右键,按住shift键添加表输入到表输出的传输线。 在这里插入图片描述   双击表输入,设置相关的参数。选择数据库连接,这里源数据库是oracle,下面是SQL查询语句,如迁移A1表的数据。 在这里插入图片描述   在输出表控件上双击,设置参数,数据库连接,这里是mysql数据库,点击浏览并选择需要迁移的目标表a1。 在这里插入图片描述   点击三角符号–运行,弹出执行转换的窗口,默认设置,直接点击run,就开始数据的迁移。 在这里插入图片描述   下一步提示,文件已经改变,是否保存?选择是,并当前的作业保存在指定的区域。 在这里插入图片描述 程序运行,在控制台可以看到打印的日志信息 在这里插入图片描述 打开mysql数据库,双击查看对应的表,可以发现数据已经迁移过来了,这里需要注意的是设置数据库的编码方式。 在这里插入图片描述

2 多表迁移

单表的数据迁移比较简单,对多张表的批量迁移,需要将需要处理的数据库的表名存储到文件中,如data.txt,注意:一个表名一行,不要有空格。需要在第一行为其起一个别名,如ORCLDATA。 在这里插入图片描述 多表数据的批量迁移主要有三个步骤,分别如下所示:

(1)数据输入

在这里插入图片描述   在输入选项中添加文本文件输入控件,作业选项中添加复制记录到结果控件。本步骤的作用是从文本中读取表的信息,复制到结果集中。   双击文本文件输入,设计相关参数。浏览方式选中文本文件,并添加到当前的目录下,如下图所示。 在这里插入图片描述   在字段标签下,添加文本文件中起的别名ORCLDATA,数据类型为String,点击确定即可。 在这里插入图片描述   最后将其保存为数据输入.ktrktr是kettle的格式文件,可以用spoon直接打开,方便之后的操作。

(2)数据转换

  在表输出选项中分别添加从结果获取记录控件,设置变量控件,再次添加表输入控件和表输出控件,并用数据传输线进行连接,结果如下图所示。 在这里插入图片描述   双击从结果获取记录控件,设置字段名称,类型等参数。字段名称填写别名ORCLDATA,类型选择String类型。参考如下图所示。 在这里插入图片描述   双击设置变量,设置字段名称,变量名,变量活动类型,这里将字段名称和变量名设置为一样,也可以不同,变量活动类型选择vaild in the parent job,点击确定。 在这里插入图片描述   双击表输入,设置参数。选择源数据库,SQL语句,这里是oracle数据库,SQL语句需要填入参数形式的变量名。 在这里插入图片描述   同样,双击表输出,设置参数属性。选择目标数据库,目标表使用变量${别名},提交记录数量,就是每次处理多少条数据。勾选使用批量插入。 在这里插入图片描述   最后将当前设置保存为数据转换.ktr,ktr是kettle的格式文件,可以用spoon直接打开。

(3)执行脚本

在核心对象下,通用选项下,分别添加Start控件,转换控件1,转换控件2和成功控件,并用传输线连接,结果如下。 在这里插入图片描述   双击转换1,选择执行文件的路径,这里需要选择的是数据输入.ktr文件,自动生成文件相对的路径。设置结果参考下图。 在这里插入图片描述   同样设置转换1的参数,选中数据转换.ktr文件,结果如下图所示。 在这里插入图片描述   注意还需要设置命名参数,并勾选两个设置,复制上一步结果到命名参数,将所有参数值传递到子转换,命名参数和流列名都设置为了ORCLDATA。结果如下图所示。 在这里插入图片描述 完成以上的设置,最后,点击run开始执行数据迁移,根据表中数据的多少决定其执行的快慢,可到数据库中查看数据的导入情况。 在这里插入图片描述

:执行过程中,可能会出现问题,如表结构的字段设置不够,可根据实际的需要调整。若执行出现问题可在下面留言。

博客参考

https://blog.csdn.net/wuzhangweiss/article/details/78408029