数据库迁移工具Navicat Premium之OracleToMysql
一、问题
由于工作需要,需要把业务库的数据库从oracle签到mysql,免费开源
二、解决办法
2.1:ETL单个对象进行转移(最笨的办法,所以抛弃掉了)
2.2:使用Navicat Premium工具
官网地址:https://www.navicat.com.cn/download,提供14天的试用权限(如下图所示)

安装运行之后,我们开始进行数据迁移吧
a:创建源和目标的连接,比如从oracle到mysql我就首先需要创建一个mysql和oracle的连接
创建MySQL连接是傻瓜式的,我这里不过多的去讲
主要说一下navicat创建Oracle连接,官方文档如下
Navicat 支持两种 Oracle 服务器连接:在 Basic 模式中,Navicat 通过 Oracle Call Interface (OCI) 连接到 Oracle。
OCI 是一个应用程序界面,让程序开发人员使用第三代语言原有进程或函数呼叫来访问 Oracle 数据库及控制全部 SQL
语句运行的阶段。OCI 是一个标准数据库访问的库和动态链接库形式检索函数。
在 TNS 模式中,Navicat 使用在 tnsnames.ora 文件中的别名项目通过 Oracle Call Interface (OCI) 连接到 Oracle
服务器。OCI 是一个应用程序界面,让程序开发人员使用第三代语言原有进程或函数呼叫来访问 Oracle 数据库及控制
全部 SQL 语句运行的阶段。OCI 是一个标准数据库访问的库和动态链接库形式检索函数。
大概就是需要在navicat的选项中指定oci.dll文件的位置,如下图

但是我按照操作安装了oracle client之后指定client中的oci.dll文件的路径一直不行,还是报错,oracle连接一直创建不成功,接下来给出终极
解决方法:
把Oracle安装目录D:\app\Administrator\product\11.2.0\dbhome_1\BIN(根据你的实际安装目录)下的oci.dll文件替换Navicat安装目录D:\software\Navicatfor Oracle\instantclient_10_2(根据你的实际安装目录)下的oci.dll就可以了
确实解决了问题
b:开始迁移数据库
如下图所示,在native中选择工具-数据传输可以看到如下界面,我们定义好源和目标,选择好迁移的对象
遗憾的地方是:Oracle到mysql只能迁移表,视图过程什么的可能是因为语法不一样而被禁用了,或者是因为我这里是使用版的问题,这就不知道了

点击开始迁移,我们可以看到迁移日志,如下图所示

不幸的是,中途却报错了
错误1:[Err] [Dtf] 2006 - MySQL server has gone away With statement: INSERT INTO `T_XX_MESSAGE`
这个错误是因为要插入的字段中含有BLOB、CLOB的大文本字段,MySQL处理能力有限
解决办法:
修改MySQL的my.ini文件(windows),linux为my.cnf,如window解压版的mysql没有my.ini只有my-default.ini
那就复制一个my-default.ini重命名为my.ini在后面加上
max_allowed_packet=16M
结果如下图所示

修改保存后重启mysql服务 net stop mysql net start mysql
错误2:
[Msg] [Dtf] Create index: `IDX_MEETING_FILENAME`
[Err] [Dtf] 1170 - BLOB/TEXT column 'FILE_NAME' used in key specification without a key length
解决办法:
原来Mysql数据库对于BLOB/TEXT这样类型的数据结构只能索引前N个字符。所以这样的数据类型不能作为主键,也不能是UNIQUE的。所以要换成VARCH,但是VARCHAR类型的大小也不能大于255,当VARCHAR类型的字段大小如果大于255的时候也会转换成小的TEXT来处理。所以也同样有问题。
作为索引的字符不能太长,修改的短一点吧
继续处理可以发现处理OK,如下图所示

数据库迁移工具Navicat Premium之OracleToMysql的更多相关文章
- 软件推荐----数据库数据处理Navicat Premium
一般情况下,企业对数据库的管控很严,通常管控分成以下: 对整台服务器管理权限,如:操作系统Administrator+SA 对单个数据库(Oracle的表空间)完全权限,如:SQL DB_Owner ...
- 数据库工具——Navicat Premium使用技巧
Navicat Premium 常用功能讲解 1.快捷键 1.1. F8 快速回到当前对象列表 1.2. Ctrl + q 打开查询界面 1.3. Ctrl + d 快速修改当前的表结构 1.4 ...
- mysql数据库在Navicat Premium连接的时候出现1862错误
navicat连接打开时报1862的错误, 很就没有连接mysql看看了,今天连接的时候发现本机的mysql链接不上了,在cmd中执行动作的时候也会叫你去set password,做设置密码的动作时会 ...
- 用Navicat Premium 操作MySQL数据库
1. 用Navicat来查看MySQL数据库 打开Navicat Premium–>[连接]–>[MySQL]–>[连接名:新建数据库的名字,此处为“本地”]:[主机: ...
- 通过Navicat Premium迁移Oracle到EDB迁移实战
1.1 DB migration analysis 在从Oracle向EDB迁移数据之前,须要做非常多准备工作.比方须要分析源数据库数据量大小.数据是否稳定.异构数据库兼容.编码方式.业务逻辑(存 ...
- Navicat Premium 12.1.16.0安装与激活
声明:本文所提供的所有软件均来自于互联网,仅供个人研究和学习使用,请勿用于商业用途,下载后请于24小时内删除,请支持正版! 本文介绍Navicat Premium 12的安装.激活与基本使用.已于20 ...
- Navicat Premium 12.1.12.0安装与激活
转载自:Navicat Premium 12.1.12.0安装与激活 作者:丿记忆灬永殇丨 链接:https://www.jianshu.com/p/5f693b4c9468 navicat12112 ...
- Navicat Premium 12.1.11.0安装与激活
本文介绍Navicat Premium 12.1.11.0的安装.激活与基本使用. 博主所提供的激活文件理论支持Navicat Premium 12.0.x系列和Navicat Premium 12. ...
- 我超级推荐的Navicat Premium 12的下载,破解方法
今天给大家推荐一款炒鸡好用的数据库管理工具,使用它,可以很方便的连接各种主流数据库软件----Navicat Premium 12 但是,它是要钱的,不过我们可以使用破解机来破解它,步骤稍有些复杂,简 ...
随机推荐
- 39、ABTestingGateway
2015 年度新增开源软件排名 TOP 100 - 开源中国社区 http://www.oschina.net/news/69808/2015-annual-ranking-top-100-new ...
- Gson通过借助TypeToken获取泛型参数的类型的方法(转)
最近在使用Google的Gson包进行Json和Java对象之间的转化,对于包含泛型的类的序列化和反序列化Gson也提供了很好的支持,感觉有点意思,就花时间研究了一下. 由于Java泛型的实现机制,使 ...
- Optimizing Oracle RAC
Oracle Real Application Clusters (RAC) databases form an increasing proportion of Oracle database sy ...
- 《Go语言实战》摘录:7.1 并发模式 - runner
7.1 并发模式 - runner
- Javascript中的依赖注入
首先通过带参函数来定义一个Javascript函数,相当于C#中的一个类. var Person = function(firstname, lastname){ this.firstname = f ...
- ibatis.net:第三天,Insert
手工生成主键的模型 xml 配置 <insert id="InsertUser" parameterClass="User"> INSERT INT ...
- 《王者荣耀》技术总监复盘回炉历程:没跨过这三座大山,就是另一款MOBA霸占市场了
如今已经大获市场成功的<王者荣耀>一直是业内各方关注的对象,而我们也知道这款产品在成为国民级游戏之前,也遇到过一段鲜有人知的调优期.也就是在2015年8月18号正式不删档测试版本推出之后, ...
- 用layer-list实现图片旋转叠加、错位叠加、阴影、按钮指示灯
先来看看一个简单的文件: <?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:a ...
- iOS:麦克风权限检测和获取
一.检测 该方法是用来判断麦克风是否进行过授权,如果授权过就直接进行需要的功能操作:如果没有进行授权,那么就要获取授权. AVAuthorizationStatus authStatus = [AVC ...
- Verilog 加法器和减法器(4)
类似于行波进位加法器,用串联的方法也能够实现多位二进制数的减法操作. 比如下图是4位二进制减法逻辑电路图. 8位二进制减法的verilog代码如下: module subn(x, y, d,cin) ...