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

PostgreSQL: Database Import from MySQL dump - syntax error

我有一个备份 MySQL 文件,我正在尝试将其导入我的 PostgreSQL 数据库。

/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

我不断得到

我什至尝试登录 Postgres 并且 运行 这导入正常

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

但结果相同。

我是不是做错了什么?我如何 stop/prevent 这个?

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

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

Link to the Github repo

对于仍在寻找答案的任何人;
错误中有一个 mysql "back-tick" (`)。 Mysql 使用 "back-ticks" 来保证 table 名称等标识符的安全。 Postgres 使用双引号 (")。

您不能只转储一个 sql 数据库供应商并导入另一个数据库供应商。有语法、外键、索引、数据转义等问题需要处理。

如果幸运的话,你有一个简单的数据库,你可以使用 "sed" 之类的东西来代替语法和编码问题。

例如,您可以将 "back-ticks" 替换为双引号以阻止您收到的错误。

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

不过,我相信这只会揭示下一个问题。迁移数据库供应商需要时间。您可能最终会使用 "sed" 或类似的东西。 ODBC and/or JDBC 无法处理您可能遇到的所有坏数据和异常情况。