使用pgloader实现MySQL迁移到postgres

https://www.cnblogs.com/java365/articles/17789520.html

用centos7.9才实现的,arm架构的弄了半天没弄起来。

一、解压,并授权执行pgloader安装脚本

cd /usr/local
tar -zxvf pgloader-3.6.9.tar.gz
cd pgloader-3	.6.9/
chmod 755 bootstrap-centos.sh

#需要下载很多关联插件
./bootstrap-centos.sh

#先package打包,后还要下载一些资源包#此版本打包时,需要用到 openSSL11 版本的 so 库,#如果有提示到 ("libcrypto.so.1.1" "libcrypto.so.1.0.0" "libcrypto.so.3" "libcrypto.so") 相关信息,#需要先执行一下 yum -y install openssl openssl-devel ,再重新 make 。
make pgloader#复制执行文件到用户本地执行目录cp build/bin/pgloader /usr/local/bin/#查看版本pgloader --version

如果出现类似情况:

在这里插入图片描述

临时解决:

另外开窗口执行:
SBCL_HEAP_SIZE=4096 sbcl

在这里插入图片描述
这是gpt的解释:
在这里插入图片描述
GitHub社区有大佬扯半天,没看懂,感兴趣的可以looklook:
https://github.com/dimitri/pgloader/issues/327

二、开始执行命令迁移

#MySQL对应的用户、密码,数据据地址和对应的库,
#PostgreSQL 对应的用户、密码,数据据地址和对应的库。
#此操作的全库数据库表转换,包含全部数据,无法单独选择某些表。#导入的数据,会在当前数据库下,建新的同名模式(Schema)方式生成。#如果遇到账户名或密码中有特殊字符,比如 @ 符号,则需要用在特殊字符之后,多加一个@来进行标记。#比如原来的密码是root@123,则在 pgloader 的命令行里,就成了 root@@123 。
pgloader mysql://user:password@localhost:port/dbName postgresql://user:password@localhost:5432/dbName

如果报错mysql连接失败问题,需要添加认证插件mysql_native_password
一般在my.cnf配置文件中添加:

default-authentication-plugin=mysql_native_password

在这里插入图片描述

最后Maven项目中怎么连接pgsql

master:
         url: jdbc:postgresql://localhost:5432/postgres?currentSchema=db&verifyServerCertificate=false&useSSL=false&requireSSL=false&useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&autoReconnect=true&allowPublicKeyRetrieval=true
         username: postgres
         password: pgsql123
         driver-class-name: org.postgresql.Driver
slave_1:
         url: jdbc:postgresql://localhost:5432/postgres?currentSchema=db&verifyServerCertificate=false&useSSL=false&requireSSL=false&useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&autoReconnect=true&allowPublicKeyRetrieval=true
         username: postgres
         password: pgsql123
         driver-class-name: org.postgresql.Driver

### MySQL 迁移PostgreSQL 的方法 对于希望将 MySQL 数据库迁移PostgreSQL 的用户来说,有多种工具和策略可供选择。一些常用的工具有 Flyway、Liquibase 和 pgloader 等[^1]。 #### 使用 Navicat 工具进行迁移 Navicat 提供了一种直观的方式来进行数据库之间的数据迁移工作。通过其图形界面,用户能够轻松设置源数据库(即 MySQL)以及目标数据库(即 PostgreSQL),并执行整个迁移过程[^2]。 ```sql -- 示例 SQL 脚本用于验证连接 (仅作示意用途) SELECT version(); ``` #### 利用命令行工具 mysqldump 导出与 psql 导入 另一种常见的做法是先利用 `mysqldump` 命令导出 MySQL 中的数据为纯文本文件形式;之后再借助于 PostgreSQL 自带的客户端程序 `psql` 将这些转储出来的结构化查询语句应用到新的 PG 实例当中去完成导入操作。 ```bash # 备份 MySQL 数据库 mysqldump --compatible=postgresql -u root -p mydb > /path/to/mydb.sql # 修改 dump 文件中的语法差异后,在 PostgreSQL 上创建新表空间及模式 createdb new_db_name psql -U postgres -f /path/to/mydb_converted.sql new_db_name ``` #### 关键注意事项 - **兼容性调整**:由于两种 RDBMS 存在一定的实现细节上的区别,因此可能需要手动修改部分 DDL/DML 语句来适应 PostgreSQL 特定的功能特性或约束条件。 - **字符集处理**:确保两者的编码方式一致非常重要,尤其是在涉及到多字节字符的情况下更应小心谨慎对待这个问题。 - **索引重建**:某些情况下原有的索引定义可能会因为版本间的变化而失效,则需重新评估现有设计是否合理有效,并据此作出相应改动[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值