【数据迁移】从Oracle或MySql 到PostgreSQL,使用EDB工具。

EDB这个工具还是挺好用的。

先贴官网的技术文档

https://www.enterprisedb.com/docs/en/52.0/MTK_Guide_v52.0/toc.html

看不懂英文可以用Chrome当前页面右键“翻译成中文”

里面有很详细介绍,但是我还是解读一下吧。

 

1.首先安装JAVA环境。 EDB工具需要java环境 装过的直接跳到步骤2

oracle官网下载:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

我本地机器是用Ubuntu 的 64位 Linux 所以我下载这个 

CentOS 可以下载rpm版本的 直接用命令 rpm -ivh rpm文件就好了,比较方便。

Ubuntu用rpm命令太麻烦了。

下载后放到服务器,可以用rz命令上传文件到服务器,也可以用xftp直接拖,随意目录都可以

然后用tar命令解压

tar -zxvf jdk-8u211-linux-x64.tar.gz -C /usr/

-C 是指定解压目录 

然后配置JAVA_HOME

使用vi编辑器 进入 /etc/profile

vi /etc/profile

在最后加上

#Java Env
JAVA_HOME=/user/jdk1.8.0_211
PATH=$PATH:$HOME/bin:$JAVA_HOME/bin
export JAVA_HOME
export PATH

vi编辑器使用

先 用方向键将光标移动到最后一行 

再按下 i 进入编辑模式

敲完再按下Esc 退出编辑模式,回到命令模式

按下 : 冒号 输入wq 回车 (保存并退出)

 

 

然后再输入命令 设置javahome生效

source /etc/profile
sudo update-alternatives --install "/usr/bin/java" "java" "/usr/jdk1.8.0_211/bin/java" 1

sudo update-alternatives --install "/usr/bin/javac" "javac" "/usr/jdk1.8.0_211/bin/javac" 1

sudo update-alternatives --install "/usr/bin/javaws" "javaws" "/usr/jdk1.8.0_211/bin/javaws" 1

sudo update-alternatives --set java /usr/jdk1.8.0_211/bin/java
sudo update-alternatives --set javac /usr/jdk1.8.0_211/bin/javac
sudo update-alternatives --set javaws /usr/jdk1.8.0_211/bin/javaws

后面的路径是刚刚用tar解压的-C后面跟的解压到的目录,jdk的bin目录

最后用 

java -version

 来验证一下

至此,java环境安装完。

参考:https://www.yiibai.com/java/how-to-install-java-on-ubuntu.html

 

2.安装EDB

!!先在官网用邮箱注册个账号,等下安装要用。https://www.enterprisedb.com/user/register

EDB官网也有安装教程,不过用的是rpm,我的Ubuntu比较麻烦。

参考了:https://www.cnblogs.com/aegis1019/p/9021799.html

在这里http://sbp.enterprisedb.com/getfile.jsp?fileid=10872   下载了 edb-migrationtoolkit-51.0.1-1-linux-x64.run

链接:https://pan.baidu.com/s/1n2mJgF8hSO42CQJMhvJCIA 
提取码:hbs1 

上传到linux机器,

执行命令 

chmod 777 edb-migrationtoolkit-51.0.1-1-linux-x64.run
./edb-migrationtoolkit-51.0.1-1-linux-x64.run

 

然后一直回车就好了

最後要你填注册刚刚的邮件账号,,可能是有使用期限??

安装目录我选了默认

 

安装完然后去修改配置文件

vi /opt/edb/mtk/etc/toolkit.properties

SRC开头的是源库 就是oracle或者mysql

TARGET开头的就是目的库 就是pg库

Oracle 12C的要注意(12C多了个PDB库),EDB这个工具不支持同步C##开头的用户(11g没有这种分别),如果数据在这个用户上,要先让DBA开一个PDB库的用户,先同步到PDB库,然后再配置源库信息为PDB库

配置好就可以去执行同步的命令了

我这里只说一下在线模式,EDB还有离线模式,我感觉太麻烦了。下面提供参考链接

命令参数可以在这里学习:https://www.enterprisedb.com/docs/en/52.0/MTK_Guide_v52.0/EDB_Postgres_Migration_Guide.1.24.html#

最后接的这个参数 SRCSCHEMANAME 对应的是 schema  在 oracle 中schema对应的就是用户名,因为oracle 一个用户只有一个schema

我这里写 -allTables 就是

SRCSCHEMANAME用户名下的所有表

还可以接 -allViews 所有视图

或者 -tables tablename1,tablename2

还有 -dataOnly 只同步数据(已经有表结构了)

执行命令

EDB会在pg库先建立一个跟源库同名的schema 

然后把执行 psql的命令

SET search_path TO xxx, 原来默认的schema

这也是为什么不用用C##的用户,如果执行 SET search_path TO C##XXX 这样pg库会报错 ,

但是 SET search_path TO ‘C##XXX’ 就没事,可是EDB的参数加不上引号

 

然后执行INSTER 语句

最后等就是了。

 

最后额外补充一下其他知识

linux安装 psql  PostgreSQL客户端

Ubuntu

sudo apt-get install postgresql postgresql-client

CentOS

yum install postgresql-client

 

安装了客户端就可以用psql命令了

客户端连接服务端

psql -d dbname -h postgreSQL_host_ip -p port -U username

 

更改默认的search_path  (原来新建库的时候默认是public)

ALTER database mypgdb SET search_path TO myschema;

这就可以让迁移过来的数据直接使用,不用每次就修改search_path

 

EDB 离线迁移数据方法 (其实主要看官网文档比较好)

https://cloud.tencent.com/developer/news/356815

https://www.cnblogs.com/aegis1019/p/9021799.html

EDB在线迁移参考:

https://cloud.tencent.com/developer/news/356080

 

psql 命令学习 

http://www.postgres.cn/docs/10/app-psql.html

http://www.postgres.cn/docs/10/reference-client.html

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值