如何将PostgreSQL导入MySQL数据库?

时间:2013-11-20 12:35:03

标签: mysql sql postgresql import dump

我已经转储了PostgreSQL数据库,当我们将项目从Heroku迁移到Amazon EC2时,我需要它到MySQL。

很长一段时间我正在做类似原始转储和类似的事情。 SQL查询,所以我想请求您帮助如何尽可能顺利地进行此操作。

我转储了PostgreSQL数据库。当我打开文件时,有一些PostgreSQL命令,表结构和属于这些表的数据。另一方面,我在EC2上有一个带有创建表的MySQL数据库(与PostgreSQL转储中的表相同 - 但所有MySQL表都是空的)。我的目标是使用PostgreSQL表中的数据填充MySQL表。

怎么做?

2 个答案:

答案 0 :(得分:5)

截至6天前,亚马逊开始提供a hosted PostgreSQL service作为其关系数据库服务的一部分。我会认真考虑直接导入PostgreSQL并完全跳过MySQL。改变到不同的DBMS总是比它的价值更痛苦。

您可以使用psql运行转储,例如:psql -f <backup_filename> <target_db>。有关详情,请参阅Amazon's docs

如果你真的准备迁移到MySQL,你可以尝试一个简单的工具,如openDBcopy或更全面(和复杂)的工具,如Talend Studio

答案 1 :(得分:0)

如果您有pg_dump创建的文本文件,那么在此文件中,您可以将源数据库中的数据视为COPY命令或一系列INSERT命令。两者都应该易于导入到任何其他数据库。也许你将不得不改变日期的字符串表示。 COPY格式只是CSV,为此您必须编写导入程序,例如Jython:可以与JDBC驱动程序一起使用的Python语言。使用Jython,您可以使用具有正确PreparedStatement的JDBC INSERT轻松解析CSV数据并将其导入目标数据库。

如果您同时连接到两个数据库,则可以使用各种工具“抽取”目标数据库。作为Jython粉丝,我只使用JDBC代码如下:

insert_stmt.setObject(i, rs_in.getObject(i))

其中insert_stmtprepareStatement()INSERT...rs_in的记录集为executeQuery()