PostgreSQL:从MySQL转储数据库导入 - 语法错误

时间:2016-06-10 15:43:37

标签: mysql postgresql import restore dump

我有一个备份mysql文件,我试图将其导入我的postsql数据库。

/Users/bheng/Desktop/database_backups/2016-06-10-local.sql

我试图通过命令行来做。

psql -d db-local -U root -f ~/Desktop/database_backups/2016-06-10-local.sql

我一直在

enter image description here

我甚至尝试登录到postgress并运行它导入正常

\i /Users/bheng/Desktop/database_backups/2016-06-10-local.sql

同样的结果发生了。

我做错了什么吗?我该如何阻止/阻止这种情况?

对此的任何提示/建议将不胜感激!

2 个答案:

答案 0 :(得分:3)

对我有用的是pgloader。它是PostgreSQL许可下非常快的+开源。

网站顶部的第一个细节实际上提到了在一个命令中从MySQL迁移到PostgreSQL。祝你好运!

Link to the Github repo

答案 1 :(得分:1)

任何仍在寻找答案的人;
错误中有一个mysql“back-tick”(`)。 Mysql使用“back-ticks”来保持表名等标识符的安全。 Postgres使用双引号(“)
您不能只是转储一个SQL数据库供应商并导入另一个。有语法,外键,索引,数据转义等问题需要处理。

如果你很幸运并且你有一个简单的数据库,你就可以使用像“sed”这样的东西来代替语法和编码问题。

例如,您可以使用双引号替换“后退”以停止您正在竞争的错误。

sed -i 's/`/"/g' /path/to/sql_script

但是,我相信这只会揭示下一期。迁移数据库供应商需要时间。您可能最终会使用“sed”或类似的东西。 ODBC和/或JDBC无法处理所有可能遇到的不良数据和异常情况。