kettle迁移数据库


最近需要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开始执行数据迁移,根据表中数据的多少决定其执行的快慢,可到数据库中查看数据的导入情况。
在这里插入图片描述

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

博客参考

【1】https://blog.csdn.net/wuzhangweiss/article/details/78408029

要使用Kettle生成ktr文件,可以采用以下方法: 首先,根据引用所提到的多种方法之一,选择并使用Kettle工具来创建一个ktr文件。Kettle是一款ETL(数据萃取、转化和加载)工具,可以用于数据整合、转换和加载等任务。 其次,按照引用中的方法,将生成的ktr文件直接输出到控制台,并将其内容复制到一个txt文件中。为了保证文件的正确识别,需要在txt文件中加上头部信息:"<?xml version="1.0" encoding="UTF-8"?>"。最后,将文件的后缀名改为ktr,即可生成一个有效的ktr文件。 最后,根据引用的建议,在代码中生成一个ktr文件,可以直观地观察到代码生成和界面的区别,也能快速找到可能存在的错误。 综上所述,要生成一个ktr文件,可以使用Kettle工具,将生成的内容输出到控制台并复制到一个txt文件中,然后将文件后缀改为ktr。另外,在代码中生成ktr文件也是一种可行的方法。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Kettle神功之数据导出](https://blog.csdn.net/qq_33361199/article/details/80838531)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [代码生成ktr文件](https://blog.csdn.net/lw18751836671/article/details/121285114)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值