从postgresql转储文件填充MySQL数据库

时间:2012-05-05 12:55:27

标签: mysql database postgresql pg-dump

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

pg_dump dbname > myfile.sql

所以,如果我尝试做的话

mysql> source myfile.sql

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

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

2 个答案:

答案 0 :(得分:22)

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

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

ON Postgres(导出):

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

ON 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了解生成的转储文件...

答案 1 :(得分:3)

迁移而不丢失数据的最佳方法是使用Mysql Workbench迁移。这个tutorial解释了如何进行迁移。我发现教程中没有提到的很少有重要内容如下:

  • 安装最新的postgres驱动程序以连接源postgres数据库,如何安装此驱动程序可在此tutoria中找到:
  • here
  • 下载并安装postgres odbc驱动程序
  • 安装完成后,您将在“打开ODBC管理器”中看到驱动程序         1. enter image description here         2。
  • 在设置源postgres数据库时使用“PostgreSQL Unicode(x64)”作为驱动程序 enter image description here

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