导入数据中文乱码_基于Navicat和Kettle的数据迁移完全解读(多图)

需求描述

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

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

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

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

e6de28ee0bc0f667aed3d9ab58db19f4.png

Logo

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

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

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

58c447c6a5d5920ebae39c743f92d3b8.png

导入向导

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

87161176fd4d388957d03870caa95b5d.png

选择文件格式

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

c35f32f4e5342ed86bc63841c413b950.png

选择分隔符

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

d9984cae7a140ac54eb5c3e036789dfe.png

选择数据表

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

25ce079ce28aade35da0b62c8a762bf5.png

调整表结构

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

690ff048093c92633e1a998b46d8ac31.png

附加选项

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

2d79037660d079e73695be632ea7f3ab.png

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

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

366746147c479194de3121bc78d65ee9.png

开始导入

e8156afa006a06e4bf9f6617e1257a9a.png

导入报错

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

c893fd0710811564af3dd5e0a6555f9a.png

调整字段类型长度

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

3960036ae275e562ac7822dfcbc407a4.png

再次导入

8eff297fc8211ebccbcccf485997c95b.png

数据验证

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

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

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

c4119d29da664596402edf68c2cf0d4c.png

新建转换

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

be39f23bdd5e38e9ffd0e7ba2cbf21bb.png

选择表输入

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

44efee6b73463cf32bfa23af27c55c15.png

编辑表输入

b8495a2d775bf2880e553f5b5783a72b.png

选择源数据库

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

37360a1faec84e9206b0188b97dd7dea.png

配置数据库连接

bfb260be2844768d86ddfd425d28523e.png

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

23acfd4331001c31e5b398d9ea8c6664.png

表输出配置

2c94219cf8206ba4e6e9c9cb54caa246.png

表输出测试

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

7eeab22a8e0352951a41759a76252a4e.png

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

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

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

5ffb6c057a22255b1e478d4b1cc35707.png

启动转换

a64782a2a6c36410cc48a43a4c98cf31.png

启动转换

73104607f61c0195f0cefbfd18bc232e.png

转换失败

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

4cd66b80f03c444c32acc551a18216a5.png

获取字段

e9393066e936e7aded5dffa9a177776d.png

选择mysql表

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

9d89a2267ccefa01576e67390259672c.png

转换成功

中文乱码,如何解决?

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

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

e44c46224e18460e5d0c4285d7bb5b83.png

查看Oralce编码

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

b2ef8e7bb5ad0dd9f37d370e60d0737a.png

set names gbk

bf369d4c93fe9c854386f2e44984e8b2.png

characterencoding:gbk

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

5518896a91d5b0557566dfce99fcbb1a.png

数据验证

总结

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/533103.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

怎样能确保计算机安全,如何确保电脑安全

如何确保电脑安全电脑安全问题层出不穷,如何确保电脑安全呢?下面是小编分享的一些方法,一起来看一下吧。一、关闭默认共享大部分的电脑系统在默认的情况下都是自动开启网络共享设置的,Win7系统也不例外,该功能主要是为了用户能够…

点云平面提取_基于LiDAR点云数据滤波方法

基于LiDAR点云数据滤波方法机载激光雷达所获取的数据被称为“点云(points cloud)”它在三维空间中呈现出随机分布的形状。在点云中,有些点属于真实的地形表面的点,有些点属于人工建筑物塔、输电线、桥等或自然植被如树、灌木、草、其他植物。激光雷达数据…

全国计算机一级书红色封面,年度最强的网红录取通知书,竟然附赠了一张黑胶唱片...

这两天世超被一张来自中国科学院大学的录取通知书给刷屏了,这份录取通知书里还附赠了一张黑胶光盘。光盘上刻录了一份国科大为新生准备的特别的礼物 —— 一段来自宇宙深处的声音。它们是由国科大师生通过 500 米口径球面射电望远镜( FAST )捕获的 15 颗脉冲星信号&…

动态新增表字段_制作动态的数据透视表(一):定义名称法创建数据透视表

——施瓦辛格:没有跌倒过的人不会成功。我们的日常工作中,会经常遇到一种情况:创建好数据透视表后,有其他被遗漏的数据内容需要重新插入到数据源后,有其他被遗漏的数据内容需要重新插入到数据源中;或者是需…

计算机公式or,【转载】 odds、OR和RR的计算公式和实际意义

1. OddsOdds 的意思为机率、可能性,是指某事件发生的可能性(概率)与不发生的可能性(概率)之比。假如某药物有疗效的比例为p1,则无效的比为1-p1,则odds的计算公式为:对于如下表所示的四格表,患病组的中暴露的概率(以实测…

系统相机裁剪比例_拍照时图片比例怎么选?比构图还要提前一步的摄影攻略要做好...

谈到摄影第一步,很多人都在说构图,但是比构图还要提前一步的,是选择合适的拍摄比例。在拍照时,始终是把要拍的东西装进设备的取景器里面,所以取景器的比例是16:9,还是4:3或者其他,就直接影响了我…

源码安装mysql_CentOS 7中源码安装MySQL 5.7.16 (亲测成功)

最近在CentOS 7中源码安装MySQL 5.7.16,发现MySQL5.7.6以后的安装方式真的与以前版本的MySQL安装方式大大的不同呀。不自己安装一把,下面这篇文章是通过自己的安装过程总结的一篇安装教程,有需要的朋友们可以参考借鉴,下面来一起看…

css动画定义,CSS3中Animation动画的定义和调用

现在经常会看到一些门户网站的专题使用到CSS3的动画,咋也不能落伍,在此这梳理下动画知识吧,便于后面用到。接下来介绍下Animation动画的定义和调用,在介绍Animation之前需要了解下Keyframes,英文意思就是关键帧&#x…

mysql5.7+proxy_mysql 5.7+mysql-proxy 0.8.5 读写分离

主从环境:mysql操做系统:CentOS6.5_x64linux主服务器Master:192.168.0.103sql从服务器Slave:192.168.0.105后端调度服务器MySQL-Proxy:192.168.0.104服务器1、mysql主从复制tcp2、mysql-proxy实现读写分离测试一、安装…

mysql 账户管理_Mysql账户管理原理与实现方法详解

本文实例讲述了Mysql账户管理原理与实现方法。分享给大家供大家参考,具体如下:账户管理在生产环境下操作数据库时,绝对不可以使用root账户连接,而是创建特定的账户,授予这个账户特定的操作权限,然后连接进行…

navicat for mysql 用户_Navicat for MySQL 怎么/怎么添加管理用户?Navicat for MySQL 添加管理用户教程_37游游网...

【37游游攻略】为了保证数据库的安全,对操作用户分级授权是非常有必要的,Navicat for MySQL 给我们提供了一个非常强悍又非常便捷的用户管理系统。点击位于连接右侧的用户命令,随之弹出管理用户的界面,Navicat for MySQL 系统默认…

js如何上传大文件到服务器,js将文件上传到远程服务器

js将文件上传到远程服务器 内容精选换一换将文件上传至Windows云服务器一般会采用MSTSC远程桌面连接的方式。本节为您介绍本地Windows计算机通过远程桌面连接,上传文件至Windows云服务器的操作方法。Windows云服务器可以访问公网。在本地Windows计算机上&#xff0c…

增强服务器安全性能,加强Linux服务器安全的20项建议

很多人都说 Linux 在默认配置下很安全,我在一定程度上同意这个说法(很值得商榷的话题)。不过 Linux 内置的安全模型和工具做得确实很到位,用户只需进行简单的调整和自定义就可以加强 Linux 服务器安全。与恶意用户做斗争对于所有 Linux 系统管理员来说都…

阴阳师师徒系统不同服务器,阴阳师体服师徒系统未收录改为随机SSR

昨天下午,受到很多争议的体服“师徒系统”更新啦!新版的“师徒系统”修改了徒弟的条件,总的来说能剔除压级大佬,并且之前奖励未收录SSR降低为随机SSR式神,难怪很多阴阳师都说:“大快人心!”的确…

Mysql union联合查询_Mysql联合查询union和union all的使用介绍

一、UNION和UNION ALL的作用和语法UNION 用于合并两个或多个 SELECT 语句的结果集,并消去表中任何重复行。UNION 内部的 SELECT 语句必须拥有相同数量的列,列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同.SQL UNION…

ios 查看同文件名_实战恢复cisco 2950交换机的IOS

本来想用两台思科交换机做实验的,可是通过console口进入其中一台交换机后却发现这个台交换机的IOS文件丢失了。本来正常进入交换机后应该是首先进入到用户模式的,而且提示符应该是“>”,而现在提示符却成了“:”,如…

repositoryitemlookupedit根据每行的id绑定数据_一种根据数据库自增ID生成唯一ID的解决方案...

在我们的开发过程中,经常会遇到ID生成的问题,那么这里就介绍一种解决方案,注意这里只适合混淆ID规则,也就是说生成的ID没有任何规则,不适用于订单ID。一般有序自增主键的ID,极易被爬虫抓取数据,…

bootstracp实现树形列表_Java实现一致性哈希算法,并搭建环境测试其负载均衡特性...

实现负载均衡是后端领域一个重要的话题,一致性哈希算法是实现服务器负载均衡的方法之一,你很可能已在一些远程服务框架中使用过它。下面我们尝试一下自己实现一致性哈希算法。一. 简述一致性哈希算法这里不详细介绍一致性哈希算法的起源了,网…

系统分析师和系统架构设计师难度比较_系统架构设计师,马上开课了!

一年只考一次的系统架构设计师7月7日通关指南开课系统架构设计师考试,是2009年11月计算机资格考试新增专业,这个级别属于高级资格考试。与该考试同级别的还有系统分析师、信息系统项目管理师、系统规划与管理师以及网络规划设计师。系统架构设计师每年考…

pythonhelloworld实例_Python基于Tkinter的HelloWorld入门实例

本文实例讲述了Python基于Tkinter的HelloWorld入门实例。分享给大家供大家参考。具体分析如下:初学Python,打算做几个Tkinter的应用来提高。刚学的HelloWorld,秀一下。我用Python3.2的,Windows版本的。源代码如下: #导…