mySQL 导入 pg
要将MySQL数据导入PostgreSQL,可以使用多种方法和工具,以下是一些有效的方法:

  1. 使用 mysql2pgsql 工具
    mysql2pgsql 是一个流行的开源工具,可以用于从MySQL导入数据到PostgreSQL。这个工具支持全量及增量数据导入,并能够处理表结构及数据的转换。

使用步骤:
导出MySQL数据:
使用mysqldump工具导出MySQL的数据库结构及数据。

mysqldump --no-data --compact --skip-dump-date --set-gtid-purged=OFF 数据库名 > struct.sql
mysqldump --no-create-info --compact --skip-dump-date --set-gtid-purged=OFF 数据库名 > data.sql
转换SQL文件:
使用mysql2pgsql工具将上述导出的SQL文件转换为PostgreSQL兼容的格式。

/root/mysql2pgsql struct.sql struct_pg.sql data.sql data_pg.sql
在转换过程中,可能需要手动修改一些数据类型的转换,例如将int转换为bigint,将datetime转换为timestamp等。

导入PostgreSQL:
使用psql命令将转换后的数据导入到PostgreSQL数据库中。

psql --dbname=目标数据库 --file=data_pg.sql

  1. 使用pgloader
    pgloader是一个强大的工具,可以用于在不同的数据库系统之间高效地导入数据,包括MySQL到PostgreSQL。

使用步骤:
配置连接:
配置MySQL和PostgreSQL的连接参数。

pgloader mysql://mysql_user:mysql_password@mysql_host:port/database_name postgresql://postgres_user:postgres_password@postgresql_host:port/database_name
执行导入:
执行数据导入命令。

pgloader mysql://mysql_user:mysql_password@mysql_host:port/database_name postgresql://postgres_user:postgres_password@postgresql_host:port/database_name

  1. 使用Python脚本
    使用Python脚本编写自定义逻辑来处理MySQL到PostgreSQL的数据导入,这允许更灵活的数据转换和处理方式。

示例脚本逻辑:
import mysql.connector
import psycopg2

连接到MySQL数据库

mysql_conn = mysql.connector.connect(user='mysql_user', password='mysql_password', host='mysql_host', database='mysql_database')
mysql_cursor = mysql_conn.cursor()

连接到PostgreSQL数据库

pg_conn = psycopg2.connect(user='postgres_user', password='postgres_password', host='postgresql_host', database='postgresql_database')
pg_cursor = pg_conn.cursor()

查询MySQL数据库并将数据插入到PostgreSQL

mysql_cursor.execute("SELECT * FROM mysql_table")
mysql_data = mysql_cursor.fetchall()

for row in mysql_data:

pg_cursor.execute("INSERT INTO postgres_table (column1, column2) VALUES (%s, %s)", row)

提交PostgreSQL数据库事务

pg_conn.commit()

关闭连接

mysql_cursor.close()
mysql_conn.close()
pg_cursor.close()
pg_conn.close()
以上方法均可用于将MySQL数据导入PostgreSQL,选择哪种方法取决于具体的需求和环境条件。