龙空技术网

基于Navicat和Kettle的数据迁移完全解读(多图)

会说科技 1090

前言:

现在看官们对“kettleoracle连接”大概比较重视,大家都需要分析一些“kettleoracle连接”的相关资讯。那么小编在网上网罗了一些对于“kettleoracle连接””的相关文章,希望你们能喜欢,朋友们快快来学习一下吧!

需求描述

对于数据分析人员来说,工作的基础是数据,没有数据分析就无从谈起,即巧妇难为无米之炊。

#数据库# #数据迁移# #Oracle#

然而,数据分析往往在实验环境或者准生产环境中开展,而数据分布在生产环境,因此需要将生产环境的部分数据导入到准生产环境中。因为网络隔离和权限管理的原因,无法直接在生产库和准生产库之间应用数据迁移工具。目前的办法是:将生产库中的数据以数据文件形式导出,然后通过安全手段传送到准生产环境,然后在准生产环境中应用Kettle等数据迁移工具实现数据的导入。

下面的实验路径如下:生产数据文件-->Mysql临时库-->准生产Oracle库。

Logo

将数据导入到MySQL临时库中(基于Navicat)

使用Navicat的导入向导可以便捷地将文本文件中的数据导入到Mysql库中,从而为下一步通过Kettle迁移至Oracle做准备,同时可以做一些临时性的分析。具体导入步骤如下:

1.选择数据库下面的【表】,选择【导入向导】

导入向导

2.选择要导入的数据文件格式,常见的txt、csv、excel等。

选择文件格式

3.选择分隔符。如果是csv文件的话保持默认就可以了,如果是用|等分割的txt文件,则需要进行调整。

选择分隔符

4.选择目标表。选择要把数据导入的数据表,可以是不存在的表,也可以是已存在的表。不存在的表需要新建,已存在的则需要去掉新建表下面的勾选。

选择数据表

5.调整表结构。在这一步,可以看到从文本文件中解析出来的表结构,即字段名称、字段类型等,同时可以根据需要对字段类型、长度和主键进行设定。我们这里先不做任何调整,看看后面什么结果。

调整表结构

6.附加选项。设定文本文件的起始和结束行数,设定首行是否为列名,设定日期和数值型数据的格式等。

附加选项

7.选择导入模式。选择数据导入模式,有追加、更新、删除、复制等几种模式,我们选择“复制”,即新建表并将数据导入其中。

8.开始导入(失败)。在第7步的基础上执行下一步,然后点击开始,执行导入操作。很遗憾,导入失败,报“row size too large.XXXXX”的错误(见下图)。

这个错误是因为,在前面的设置中,我们将每个字段都设置为Varchar类型且长度为255,且宽表字段数量N过多(N>100),255*N超出了Mysql的限制(65535)。因此,解决方法是调整字段类型及长度,使之低于Mysql的限制。

开始导入

导入报错

9.按需调整字段类型及长度,这里主要调整的是长度,由255调减至32,够用了。

调整字段类型长度

10.再次导入(成功)。调整完字段类型及长度后,再次执行导入,显示导入成功,验证发现数据确已入库。

再次导入

数据验证

Mysql数据向Oracle迁移(基于Kettle)

基于Navicat完成了数据文件的导入之后,下一步就是利用Kettle实现数据在Mysql数据库和Oracle数据库上的迁移,具体操作过程如下:

1.新建转换。打开Kettle,新建转换,为数据迁移做准备。

新建转换

2.选择表输入并将表输入组件拖入主功能区。

选择表输入

3.编辑表输入节点并选择源数据库类型,这里选择Mysql。

编辑表输入

选择源数据库

4.完成数据库连接的配置。包括主机名、端口、数据库名称、数据表、用户名、密码等,通过测试可验证数据库是否已正确连接。

配置数据库连接

5.完成表输出配置。完成表输入配置后,选择表输出并拖至主功能区,按照表输入配置的方式完成表输出的配置,只是这里要配置Oracle的数据库连接,包括主机名、数据库、数据表、用户名、密码、端口等。同样的,可以通过测试验证是否已连接成功。

表输出配置

表输出测试

6.建立表输入与表输出的连接,即在主功能区中,点击表输入的箭头并拖至表输出的箭头处。

建立输入节点和输出节点的连接

7.启动转换(失败)。点击主功能区左上角的三角形按钮,启动转换。

很遗憾,转换失败,表输出节点上出现了红色标识。通过查看日志发现,这是因为在表输出中配置的数据表不存在,导致数据无法插入。所以,解决的办法就是新建数据表。如果通过create新建就太吃力了,还好可以通过配置解决,详见第8步。

启动转换

启动转换

转换失败

8.建立输出数据表。在Oracle数据连接配置界面中,选择【数据库字段】,然后点击【获取字段】,选择Mysql数据库中的输入表,即可自动生成目标表的建表语句,执行建表语句即可完成目标表的构建。

获取字段

选择mysql表

9.启动转换(成功)。再次启动转换,没有报错,意味着转换成功。

转换成功

中文乱码,如何解决?

完成Mysql向Oracle的数据迁移后,通过PL/SQL查询发现数据表中的中文乱码,显然这是因为两边数据编码不一致造成的,解决方法就是配置编码使两边保持一致。

1.查看Oracle的数据编码,可以看出是GBK,下一步就是把Mysql的编码调整成GBK。

查看Oralce编码

2.配置Mysql编码。在表输入的配置环节,在【高级】中增加“set names gbk;”,在【选项】中增加“characterEncoding:gbk”。

set names gbk

characterencoding:gbk

3.配置完成后,再次执行转换任务,验证发现中文正常显示。

数据验证

总结

本文通过一个具体的业务场景逐步介绍了数据的迁移过程,总结如下:

Navicat提供了较好的数据导入工具,可以实现数据文件的快速入库。Kettle可以快捷地实现数据在异构数据库中的迁移,配置项丰富,操作简单。使用Navicat进行数据导入时,要注意设置合理的表结构,不能超过Mysql限制,否则会导入失败。在使用Kettle进行数据在Mysql和Oracle中的迁移时,一是要确保目标Oracle表的存在,如不存在则需要配置或新建,二是要注意编码一致,避免出现总问乱码。

我是会说科技,关注我,一起聊聊数据、科技、IT、安全、金融那些琐事。####

标签: #kettleoracle连接 #kettle oracle连接