数据库迁移之从oracle 到 MySQL

前言

之前搭建了一个ExtJS + Spring + Oracle 的这样一个报表系统的框架。

由于其它部门的要求, 也须要这个Framework 进行一些特殊的定制。

可是有一个问题是 Oracle 的数据库是须要收费的, 个人使用倒没什么问题。 公司使用的话就会有侵权的问题了。

而MySQL 则是全然免费的。


所以使用 ExtJS + Spring + MySQL  这种组合应该就没什么问题了。

理论上来说, MySQL 已经被Oracle 收购。 这两者之间的Migrate 应该比較easy, 但实际的迁移还是有一些问题, 下面就说一说一些实现的方式和问题。


方式一: 手动方式导入导出

手动的方式导入, 就是操作步骤会比較繁琐一些。

对Table 的结构和数据:

1. 使用 SQL Developer 把 oracle 的 table 的schema 和 Data(.sql 和 .xls) 导出

2. 使用 MySQL 的 WorkBench 创建 Table 和导入数据。

这里语法上会稍微有一些不同, 所以须要稍微做一些调整。


对于View 来说。 特别是复杂的有子查询的Oracle View 说, 要导入到MySQL 看起来就不是那么easy了。



方式二: 使用工具Navicat 进行导入

http://www.navicat.com.cn

Navicat , 这是MySQL 官方站点上有人建议使用的工具。

这是一个收费的软件。 眼下的收费是 1000 到1600 人民币。

可是能够免费试用一个月。

下载安装后, 启动的页面例如以下:


迁移的流程例如以下:

1. 新建数据库的连接


建立须要迁移的Oracle 和 MySQL 的数据库连接。

另外, 建立Oracle 连接的时候还须要下载一个oci.dll 的文件。

下载地址:

http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html

下载之后。 解压到某个文件夹:

在 Navicat  的 工具 --> 选项 下做相似例如以下设置:

InstantClientOptions.jpg

细部能够參见:

http://wiki.navicat.com/wiki/index.php/Instant_client_required

完毕设置后, 重新启动 navicat


2.  设置过连接之后, 接下来就能够进行表和数据的migrate 了

点击: 工具 --》 传输数据

在 "常规" 的标签页中设置须要 migrate 的连接


在 “高级” 的标签页中 , 设置须要 migrate 哪些详细的内容:

配置完毕之后。 点 "開始" 就能够了。


基本上: 对于 Table 的结构和数据的迁移的话, 基本上没什么问题。

可是对于 View 的导入。 由于MySQL 的View 的语法不能有子查询语句。

在Navite 上, 能够看到从 Oracle 导入到 MySQL 的时候, View 的Checkbox 不能选取。



方式三: 使用工具DBMover 的OracleToMySQL 进行导入

DBMover这个站点也提供了 Oracle 到 MySQL 迁移的工具。

下载地址是:

http://dbmover.com/download/oracletomysql_cn.zip

这也是一个收费的软件,  试用版的限制是: 同意迁移的记录条数累计为10万条。

下载安装,启动后会先要求输入 数据库连接的信息:


一直配置完毕之后的页面是:



这里就仅仅能看到table 了。

和Navicat比較起来。 感觉这个显得简单, 仅仅能migrate table , 并且使用上也不是非常方便。

下一次Migrate 又得重头到尾输入一次, 没办法记住之前配置的连接。


方式四: 使用工具intelligent-converters 的 oracle-to-mysql 进行导入


相同是一个收费的工具:

下载地址:

http://www.intelligent-converters.com/oracle-to-mysql.htm

使用版的限制是每一个table 仅仅能导入 5 笔数据。


操作方式上和DbRemover 提供的非常相似。优点是能记住上次的一些连接信息。

相同仅仅能对表进行导入。

导入的页面:




posted on 2017-04-27 14:18  ljbguanli  阅读(561)  评论(0编辑  收藏  举报