导入数据中文乱码_基于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 颗脉冲星信号&…

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

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

计算机中除法的函数英文,EXECL中哪一个英文是算除法的?-excle 除法的英文

Excel中除法的函数是哪个?Excel中除有具体的函数,需要使用操作方法才行下:1、创个Excel工作表,填入数值一、数两列,开始进行第三列的除法数值计算。2、将鼠标放到想要求除法数值结果的格内,在Excel工作表上部找到fx选…

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

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

mysql日期格式化季度_mysql 按年度、季度、月度、周、日SQL统计查询

一、年度查询查询 本年度的数据SELECT *FROM blog_articleWHERE year( FROM_UNIXTIME( BlogCreateTime ) ) year( curdate( ))二、查询季度数据查询数据附带季度数SELECT ArticleId, quarter( FROM_UNIXTIME( BlogCreateTime ) )FROM blog_article其他的同前面部分&#xff1a…

js 创建keyframe_javascript – 查找特定的CSS @keyframes规则

我想用JavaScript调整CSS中的特定keyframes-rule.这一切都适用于以下代码:CSS:-webkit-keyframes changecolor {0% { color: red; }100% { color: green; }}keyframes changecolor {0% { color: red; }100% { color: green; }}JavaScript的:f…

计算机发展史评课议课稿,评课议课记录范文

2、由分母是1的真分数直接到结论后,把预设时推广到一般规律的环节掉了,致使本节课在思维上不太严密。学生的思维更没有真正地融于规律的理解中去。其实太多的意外,其原因根源在于自己想关注课堂的生成却无机智的应变能力,在学生直…

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

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

计算机常用主题词,标引主题词的目的是( )。A.反映文件的全部内容B.便于计算机检索和管理C.供归_考题宝...

阅读短文,回答下列各题: Mr.Black was young and able.The boss liked him.Last month he was sent toChina on business.Before hewent back from China,he decided to buy something for Tony…

源码安装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实现读写分离测试一、安装…

flask ajax 文件上传,python flask使用ajax请求上载文件。文件为空

我正在尝试上传一个大约1.62MB的图像到一个用烧瓶写的终点。request.files对象始终为空。我检查了以下问题,但没有成功:这是我的服务器:from flask import Flask, request, jsonify, render_templateimport sysapp Flask(__name__)app.config[UPLOAD_FOLDER] r"C:\Temp&…

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

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

宏脉系统怎么改服务器地址,宏脉系统使用手册大全.doc

WORD资料下载可编辑专业资料分享目录TOC \o "1-3" \h \u HYPERLINK \l _Toc16722 第一章 通用功能键说明 PAGEREF _Toc16722 4HYPERLINK \l _Toc15100 1.1功能键的使用说明 PAGEREF _Toc15100 4HYPERLINK \l _Toc5198 1.2 打印设置 PAGEREF _Toc5198 8HYPERLINK \l _…

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

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

ajax实现向上正在加载,向上滚动或者向下滚动分页异步加载数据(Ajax + lazyload)

/****desc : 分页异步获取列表数据,页面向上滚动时候加载前面页码,向下滚动时加载后面页码ajaxdata_url ajax异步的URL 如data.phppage_val_name ajax异步的URL中的页码参数名 如pagenopage_no 初始加载页码,默认1 [如2,则与前面两参数结合为…

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

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