28

实际上,我需要从 postgresql 生成的 SQL 文件中填充 MySQL 数据库

pg_dump dbname > myfile.sql

所以,如果我尝试这样做

mysql> source myfile.sql

这显然是行不通的。虽然它确实填充了 70% 的表格,但我想知道有没有办法实现它?

从 postgresql 的源文件中,我可以获取并填充我的 MySql 数据库。

4

2 回答 2

30

如果要将数据和结构从 postgres 表迁移到 mysql 等价物,最简单的方法是使用数据库转换工具,例如:ESF Data Migration Toolkit或开源对应的openDBCopy

如果你不想或者你不能使用迁移工具,而你只需要迁移数据,另一种简单的方法是从 PostgreSQL 以 CSV 格式导出数据,然后将其导入 MySQL,这样你就可以用一些像这样的命令:

在 Postgres(导出)上:

COPY (SELECT query) TO '/path to csv file -*.csv'; 

在 Mysql 上(导入):

load data infile 'path to csv file-*.csv' into table tablename fields terminated by ',' lines terminated by '\n' . 

如果您仍然想继续使用转储工具(pg_dump),您可以添加此选项以生成 MySQL 可以更好地理解的转储文件:

-d --data-only --no-owner --no-acl --attribute-inserts --disable-dollar-quoting --no-tablespaces

请记住,根据源数据库的结构,您可能必须操作转储文件以允许 MySQL 理解生成的转储文件......

于 2012-05-05T13:06:26.930 回答
2

在不丢失数据的情况下进行迁移的最佳方法是使用 Mysql Workbench 迁移。本教程解释了如何进行迁移。我发现教程中没有提到的一些重要的事情如下:

  • 安装最新的 postgres 驱动来连接源 postgres 数据库,如何安装这个驱动可以在这个教程中找到:
  • 从这里下载并安装 postgres odbc 驱动程序
  • 安装后,您将在“打开 ODBC 管理器”中看到驱动程序 1. 在此处输入图像描述 2.
  • 在设置源 postgres 数据库时使用“PostgreSQL Unicode(x64)”作为驱动程序 在此处输入图像描述

注意:使用“PostgreSQL ANSI(x64)”作为驱动程序在迁移时会出错。可能是因为我的数据包含 unicode 字符。

于 2017-03-02T10:58:33.403 回答