Jacky's blog
首页
  • 学习笔记

    • web
    • android
    • iOS
    • vue
  • 分类
  • 标签
  • 归档
收藏
  • tool
  • algo
  • python
  • java
  • server
  • growth
  • frida
  • blog
  • SP
  • more
GitHub (opens new window)

Jack Yang

编程; 随笔
首页
  • 学习笔记

    • web
    • android
    • iOS
    • vue
  • 分类
  • 标签
  • 归档
收藏
  • tool
  • algo
  • python
  • java
  • server
  • growth
  • frida
  • blog
  • SP
  • more
GitHub (opens new window)
  • 服务器tutorial
  • spring

  • 数据库

    • database
    • mysql

    • sqlite
    • PostgreSQL
    • redis 使用指南
    • mysql2pgsql
      • pgloader 迁移
      • 使用 py-mysql2pgsql 迁移
      • link
  • 运维

  • other

  • 《server》
  • 数据库
Jacky
2024-06-23
目录

mysql2pgsql

从 MySQL 迁移到 PostgreSQL 涉及多个步骤,包括数据导出、数据转换、数据导入和应用程序代码更新。以下是一个详细的指南来帮助你完成这一迁移:

  1. 准备工作
  • 备份数据库: 在迁移前,确保你有一个最新的 MySQL 数据库备份
  • 安装工具: 确保你已经安装了 pgloader,这是一个常用的工具来从 MySQL 迁移到 PostgreSQL。你可以使用 brew 安装:
brew install pgloader
1
  1. 导出 MySQL 数据

你可以使用 mysqldump 来导出 MySQL 数据库:

mysqldump -u username -p database_name > database_name.sql
1

# pgloader 迁移

  1. 使用 pgloader 进行迁移

pgloader 可以直接从 MySQL 迁移到 PostgreSQL,而无需手动转换 SQL 文件。以下是一个示例命令:

pgloader mysql://username:password@localhost/mysql_db_name postgresql://username:password@localhost/pg_db_name
1

如果你使用的是 8.0+ 版本,你可能会遇到 UNSUPPORTED-AUTHENTICATION 的问题,如下,自行查阅 stackflow 解决

pgloader - Failed to connect to mysql at "localhost" (port 3306) as user "root": Condition QMYND:MYSQL-UNSUPPORTED-AUTHENTICATION was signalled. stackoverflow (opens new window)

  1. 手动数据转换(如有必要)

如果有特定的复杂数据转换需求,可能需要手动调整 SQL 文件。例如,某些数据类型在 MySQL 和 PostgreSQL 之间有差异,需要转换

  1. 创建 PostgreSQL 数据库

在 PostgreSQL 中创建目标数据库:

createdb -U postgres pg_db_name
1
  1. 导入数据

如果你已经使用 pgloader 迁移数据,这一步可以跳过。否则,你可以使用 psql 导入数据:

psql -U username -d pg_db_name -f database_name.sql
1
  1. 转换应用程序代码

更新你的应用程序代码,以使用 PostgreSQL 驱动和查询语法。你可能需要修改以下内容:

  • 数据库连接字符串: 将 MySQL 的连接字符串替换为 PostgreSQL 的连接字符串
  • SQL 查询:MySQL 和 PostgreSQL 在某些 SQL 语法上有所不同,需要调整。例如:
    • AUTO_INCREMENT 转换为 SERIAL 或 BIGSERIAL
    • NOW() 转换为 CURRENT_TIMESTAMP
    • LIMIT 和 OFFSET 语法可能需要调整
    • ENUM 类型可能需要转换为 CHECK 约束
  1. 测试

全面测试你的应用程序,确保所有功能在 PostgreSQL 上正常运行

# 使用 py-mysql2pgsql 迁移

todo

# link

  • mysql 数据迁移到 pgsql 之我见! (opens new window)
  • mysql-to-postgresql (opens new window)
上次更新: 2024/12/01, 17:09:08
redis 使用指南
SSH 进行本地文件的交互

← redis 使用指南 SSH 进行本地文件的交互→

最近更新
01
npx 使用指南
10-12
02
cursor
09-28
03
inspect
07-20
更多文章>
Theme by Vdoing | Copyright © 2019-2025 Jacky | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式