公司项目之前一直用的的ORACLE的数据库,不知道是因为什么原因,现在要换成MYSQL的数据库,所以这个工作就交给了我,在这里我记录一下我迁库改项目的过程,希望有类似工作的朋友能避个雷,少踩几个坑。
# 第一种方法尝试(失败)
刚开始我尝试了使用Navicat的数据传输功能,在Navicat工具栏,点击【工具】->【数据传输】。
打开了一个这样的窗口,选择两个数据库。
点击下一步,选择全部的表。
一直下一步就可以了,但是怎么可能这么顺利就完成了呢。
果然报错了。
# 第二种方法尝试(失败)
紧接着,我又尝试了第二种方法,在Navicat中把Oracle数据库的代码保存转储成sql文件,然后用Power Designer转成Mysql的语句文件。
选择你想要改变的数据库表空间,右击选择【转储SQL文件...】->【结构 + 数据】。
打开Power Designer。
在Power Designer中点击【File】->【Reverse Engineer】->【Database...】。
在之后弹出的窗口中DBMS选择【ORACLE Version 11g】。
点击这里添加刚刚Navicat转储的sql文件。
等进度条结束,导入完是这个样子的。
之后点击【Database】->【Change Current DBMS...】
把数据库换成对应的Mysql数据库。
点击【确定】。
成功之后我们发现,数据字段的结构都发生了改变。
然后我们点击【Database】->【Generate Database...】生成新的适合Mysql的文件导出。
在弹出的窗口中,选择新sql文件要保存的路径和名称。
生成完,新的sql文件之后,把新的sql文件放到Navicat中的Mysql库中执行。
在弹出的窗口中选择,刚刚生成的新的sql文件。
点击【开始】,果然又报错了。
# 第三种方法尝试(成功)
之后我又尝试了第三种比较笨的方法,效率也比较低,但是不会报错。
找到一张表的建表DDL语句,复制出来保存到.sql为后缀的文件,用方法二的方式放到Power Designer中进行转换。
成功修改后的建表语句生成了一张用户表,不过生成的用户表里面是没有数据的,因为我们只创建了表结构。
接下来我们,复制ORACLE数据库中的数据为insert语句之后,经过简单的修改,在Mysql数据库中执行。
选中全部语句,执行。
没有报错,一张表就这样迁移完成了,之后也这样慢慢操作吧,不过效率确实低。