实际上我需要从postgresql生成的SQL文件填充MySQL数据库
pg_dump dbname > myfile.sql
所以,如果我尝试做的话
mysql> source myfile.sql
这显然不起作用。虽然它确实填充了70%的表格,但我想知道有没有办法实现它?
从postgresql的源文件中,我可以获取并填充我的MySql数据库。
答案 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解释了如何进行迁移。我发现教程中没有提到的很少有重要内容如下:
注意:使用“PostgreSQL ANSI(x64)”作为驱动程序会在迁移时出错。可能是因为我的数据包含unicode字符。