之前写过一篇如何使用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

DBeaver导出PostgreSQL的SQl dbeaver导出oracle数据库_迁移

② 点击绿色+号,创建新的用户连接,这里的用户就是ISHOPXITU,密码是上一步设置的,或者默认密码。

DBeaver导出PostgreSQL的SQl dbeaver导出oracle数据库_数据库_02

DBeaver导出PostgreSQL的SQl dbeaver导出oracle数据库_oracle_03

③ 选择工具,选择数据库导出选项。

DBeaver导出PostgreSQL的SQl dbeaver导出oracle数据库_迁移_04

④ 这时进入导出向导,在这里选择你需要导出的目标数据库。

DBeaver导出PostgreSQL的SQl dbeaver导出oracle数据库_sql_05

说明:导出DDL(E)这一部分为默认勾选,导出数据这部分,选择 insert 其余全部默认。

⑤ 点击下一步,这部分默认。

DBeaver导出PostgreSQL的SQl dbeaver导出oracle数据库_数据库_06

⑥ 指定对象,方案选择 ISHOPXITU,类型选 ALL OBJECT,你可以点击查找,查看选中的对象

DBeaver导出PostgreSQL的SQl dbeaver导出oracle数据库_迁移_07

⑦ 指定数据, 方案选择 ISHOPXITU,类型选 ALL OBJECT,你可以点击查找,查看选中的对象

DBeaver导出PostgreSQL的SQl dbeaver导出oracle数据库_数据库_08

⑦导出概要,最后点击完成。

DBeaver导出PostgreSQL的SQl dbeaver导出oracle数据库_SQL_09

等它自动导出完毕,我们就可以看到SQL文件了。

这时候我们可以来导入到另一台电脑上测试一下导出的SQL是否是正确的。

在另一体电脑上,我们新建一个同名的数据库用户,右键打开SQL工作表。

DBeaver导出PostgreSQL的SQl dbeaver导出oracle数据库_数据库_10

在SQL界面,复制粘贴导出的SQL语句,点击绿色三角形后运行。

DBeaver导出PostgreSQL的SQl dbeaver导出oracle数据库_SQL_11

当然,我们也可以通过sqlplus来导入SQL文件
具体操作是:
用同名的数据库用户登录,执行 sql>@完整路径/文件名.sql;

到这里我们就完成使用SQL developer 导出,导入SQL文件。

错误记录:
①不能在aaaa用户下,执行导出操作,这样会使得数据库源是 aaaa,而不是目标数据库,会导致中间表(在移植的过程中,Oracle会在aaaa用户表下自动生成中间表)一起导入到SQL文件中,这样会产生多余的表

DBeaver导出PostgreSQL的SQl dbeaver导出oracle数据库_迁移_12

解决方法有两种
①使用与目标数据库同名的用户创建新的连接,这时候就不会有中间表。
②右键 aaaa数据库 选择删除移植资料档案库(去除中间表),然后直接进行数据库导出

DBeaver导出PostgreSQL的SQl dbeaver导出oracle数据库_sql_13

疑惑:实测,在指定对象与指定数据时,类型全选 ALL OBJECT操作与全选 TABLE操作结果导出来的sql文件导入新电脑上是一样的,很奇怪,我目前还没懂这之间的区别。