将MySQL导入Postgres。许可问题

时间:2014-03-22 13:55:25

标签: mysql postgresql data-migration

我有MySql和Postgres数据库。我一直在研究填充了我的数据的Mysql DB。现在让我使用heroku,我需要将它移植到Postgres。这些是我遵循的步骤:

我通过简单的dump命令从我的Mysql DB导出数据:

mysqldump -u [uname] -p[pass] db_name > db_backup.sql

我登录了Postgres

sudo su postgres

现在,当我尝试将sql导入Postgres时,它无法访问db_backup.sql。我更改了所有用户的权限,并将转储文件读/写为all,但仍无法导入sql。

我的问题是从Mysql到Postgres复制(模式和数据)的正确方法是什么。另外,为什么即使在更改权限后我也无法访问转储文件?如果我有一个来自Mysql的转储,它在Postgres上运行它时会遇到什么问题(我的Mysql中没有任何程序性的东西。只需创建表并将数据转储到这些表中。)?

谢谢!

P.S。如果重要的话,我在Mac-Mavericks上

1 个答案:

答案 0 :(得分:0)

虽然问题的主要部分是由@wildplasser回答的,但我认为我会为那些将MySQL数据移植到Postgres的人提供完整的答案。

尝试多种解决方案后,最简单,最顺利的解决方案是:https://github.com/lanyrd/mysql-postgresql-converter

这很顺利。但只有一个问题 - 它没有将任何Mysql序列移植到Postgres。这意味着如果您有自动增加主要ID,则必须单独更改Postgres架构并在移植完成后创建序列序列。除此之外,它非常顺利。

要谈论权限问题,以Postgres用户身份登录并尝试访问原始用户创建的转储失败,正确的方法是保持以原始用户身份登录,并使用postgres用户进行数据库操作,方法是使用 - U postgresuser命令。

例如:psql -U postgres databasename < data_base_dump

虽然对于许多人来说这显然是这样做的方式,但我必须承认这对我来说是那个尤里卡时刻之一:)