之前写过一篇如何使用SQL developer将MySQL数据库迁移至Oracle数据库
文章链接:
现在我需要将迁移完成的数据库导成SQL文件(包含表,数据等),再导入到其他电脑上。
本文的主要内容是:已迁移至Oracle数据库的表,使用SQL developer 再导出来,方便导入到其它设备上,另外需要满足表,数据,主外键关系等都导出来。
在网上查了有关使用SQL developer 导入导出SQL文件的教程,发现都不太详细,而且在这里我遇到了一些坑,想写下来,帮助大家。
本文章使用的软件版本信息:
oracle SQL Developer 4.2.0.17.089
mysql 5.7
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
PL/SQL Release 11.2.0.1.0 - Production
CORE 11.2.0.1.0 Production
TNS for 32-bit Windows: Version 11.2.0.1.0 - Production
NLSRTL Version 11.2.0.1.0 - Production
数据库表名是 aaaa,目标数据库是 ishopxitu正文:
① 右键 目标数据库 编辑用户 ,在这里你可以 设置 目标数据库的口令,默认表空间,临时表空间,如果不想设置,这一步可以省略。
说明:将MySQL数据库迁移至Oracle数据库后,会在其他用户目录下自动创建与MySQL数据库同名的用户,并以大写标出,在这里记为ISHOPXITU
② 点击绿色+号,创建新的用户连接,这里的用户就是ISHOPXITU,密码是上一步设置的,或者默认密码。
③ 选择工具,选择数据库导出选项。
④ 这时进入导出向导,在这里选择你需要导出的目标数据库。
说明:导出DDL(E)这一部分为默认勾选,导出数据这部分,选择 insert 其余全部默认。
⑤ 点击下一步,这部分默认。
⑥ 指定对象,方案选择 ISHOPXITU,类型选 ALL OBJECT,你可以点击查找,查看选中的对象
⑦ 指定数据, 方案选择 ISHOPXITU,类型选 ALL OBJECT,你可以点击查找,查看选中的对象
⑦导出概要,最后点击完成。
等它自动导出完毕,我们就可以看到SQL文件了。
这时候我们可以来导入到另一台电脑上测试一下导出的SQL是否是正确的。
在另一体电脑上,我们新建一个同名的数据库用户,右键打开SQL工作表。
在SQL界面,复制粘贴导出的SQL语句,点击绿色三角形后运行。
当然,我们也可以通过sqlplus来导入SQL文件
具体操作是:
用同名的数据库用户登录,执行 sql>@完整路径/文件名.sql;
到这里我们就完成使用SQL developer 导出,导入SQL文件。
错误记录:
①不能在aaaa用户下,执行导出操作,这样会使得数据库源是 aaaa,而不是目标数据库,会导致中间表(在移植的过程中,Oracle会在aaaa用户表下自动生成中间表)一起导入到SQL文件中,这样会产生多余的表
解决方法有两种
①使用与目标数据库同名的用户创建新的连接,这时候就不会有中间表。
②右键 aaaa数据库 选择删除移植资料档案库(去除中间表),然后直接进行数据库导出
疑惑:实测,在指定对象与指定数据时,类型全选 ALL OBJECT操作与全选 TABLE操作结果导出来的sql文件导入新电脑上是一样的,很奇怪,我目前还没懂这之间的区别。