前言
在实际工作中我们一定会有这样的需求,要把Oracle的数据文件搬迁到openGauss或者MogDB上。基本上用三种方法可以实现搬迁,以下是对方法进行逐一的操作。
当我们想把Oracle格式的SQL文件导入到MogDB数据库时,我们可以借助navicat工具,先将SQL文件导入到Oracle数据库中,再使用数据传输功能把SQL中的对象和数据直接导入到MogDB。或者使用数据传输功能将这些对象的定义和数据导出成PG格式的SQL语句,再导入到MogDB数据库中。
搬迁方法:
1、
方法一:将oracle数据SQL文件(oracle.sql)导入到oracle的test数据库;
2、
方法二:将导入到test数据库的数据库对象导出为PostgreSQL格式的SQL文件test.sql,再将test.sql文件导入到mogdb的oracle数据库。
3、
方法三:Oracle数据表搬迁到MogDB/openGauss数据库比较容易想到的两个工具是oracle_fdw及Ora2Pg。
方法一:
将oracle格式SQL文件(oracle.sql)导入到oracle的test数据库:
oracle.sql 文件内容:CREATE TABLE `oracle` (
`ID` int(11) NOT NULL COMMENT '用户ID',
`Name` varchar(50) NOT NULL COMMENT '姓名',
`Notes` varchar(200) DEFAULT NULL COMMENT '注释',
PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='测试表';
使用navicat工具连接oracle:


右键点击打开连接:

双击test用户,右键选择运行SQL文件:
选择oracle.sql文件位置,并点击开始:

导入成功后,点击关闭:

查询test数据库下已成功创建表oracle:

从oracle的test数据库导入到MogDB数据库
将导入到test数据库的数据库对象导出到MogDB的数据库。
在navicat中连接MogDB数据库:
填写MogDB数据库连接信息后,点击确认:

右键点击打开连接:

菜单栏选择工具——数据传输:
选择正确的源数据库和目标数据库信息后,点击下一步:
选择要传输的数据库对象,点击下一步:

确认无误后,点击开始:

传输完成后点击关闭:

SQL文件中的对象成功导入到MogDB数据库:

方法二:
将导入到test数据库的数据库对象导出为PostgreSQL格式的SQL文件test.sql,再将test.sql文件导入到mogdb的oracle数据库。
菜单栏选择工具——数据传输:

选择正确的源数据库和导出文件格式(这里选择PostgreSQL),点击下一步:

选择要导出的对象,点击下一步:

确认无误,点击开始:
导出成功,点击关闭

Test.sql 文件内容:/* Navicat Premium Data Transfer
Source Server : oracle Source Server Type : ORACLE Source Server Version :
80019 Source Host : localhost:3306 Source Schema : test Target Server Type :
PostgreSQL Target Server Version : 130000 File Encoding : 65001 Date: 15/08/2022
10:21:59*/-- ------------------------------ Table structure for Oracle
-- ----------------------------
DROP TABLE IF EXISTS "test"."Oracle";
CREATE TABLE "test"."Oracle" (
"ID" int4 NOT NULL,
"Name" varchar(50) NOT NULL,
"Notes" varchar(200)
);
COMMENT ON COLUMN "test"." Oracle "."ID" IS
'用户ID';
COMMENT ON COLUMN "test"." Oracle "."Name"
IS '姓名';
COMMENT ON COLUMN "test"." Oracle "."Notes"
IS '注释';
COMMENT ON TABLE "test"." Oracle " IS '测试表';
-- ----------------------------
-- Records of Oracle
-- ----------------------------
BEGIN;
COMMIT;
-- ----------------------------
-- Primary Key structure for table Oracle
-- ---------------------------
ALTER TABLE "test"." Oracle " ADD PRIMARY KEY
("ID");
打开MogDB,右键点击Oracle数据库选择运行SQL文件,将test.sql文件导入:

确认无误,点击开始。
此时要注意,MogDB中Oracle数据库下要存在与导出数据库同名的schema(也就是test),并且导入用户要是test模式的拥有者。
导入成功,点击关闭:

在MogDB的Oracle数据库的test模式下导入了表Oracle。
方法三:
Ora2Pg是一个将Oracle迁移至PostgreSQL的开源工具,通过连接Oracle数据库,自动扫描并提取其中的对象结构及数据,产生SQL脚本,通过手动或自动的方式将其应用到PostgreSQL。
Ora2Pg主要语言是perl,使用Perl DBI模块,通过DBD:Pg连接PostgreSQL目标数据库,openGauss兼容PostgreSQL的通信协议以及绝大部分语法,因此只需作部分命名上的修改,Ora2Pg同样可应用于openGauss。
如果是搬迁到MogDB上,可以用MogDB的MTK软件,这也是个不错的选择。




