psql restore sql dump语法错误

时间:2017-09-23 22:14:39

标签: sql postgresql psql restore yelp

我正在尝试将https://www.yelp.com/dataset/documentation/sql导入PostgreSQL实例。它有重音符号/反引号的问题。除了进行字符替换之外,还有其他方法可以解决这个问题吗?

ERROR:  syntax error at or near "PaxHeader"
LINE 1: PaxHeader/yelp_db.sql17 uid=998889796
    ^
ERROR:  syntax error at or near "`"
LINE 1: CREATE DATABASE /*!32312 IF NOT EXISTS*/ `yelp_db` /*!40100 ...
                                             ^
ERROR:  syntax error at or near "USE"
LINE 1: USE `yelp_db`;
    ^
ERROR:  syntax error at or near "`"
LINE 1: DROP TABLE IF EXISTS `attribute`;

1 个答案:

答案 0 :(得分:0)

这些是PostgreSQL符合标准的典型MySQL语法问题,因此不支持。 GitHub上有一些不同的转换器可能有所帮助。当我不得不这样做时,有一些工具可以转换文本转储。他们并没有完美地工作,但他们已经足够接近了。回顾今天的工具,他们倾向于假设你有一个真正的MySQL数据库,而不仅仅是一个转储文件。

因此,今天解决此问题的合适方法是将数据加载到MySQL中,然后将其移至PostgreSQL。在这方面,您似乎有四个选项,我可以考虑转换架构和数据:

  1. 有一些工具可以从MySQL转换XML转储并将它们加载到PostgreSQL中。
  2. 您可以将PostgreSQL中的外部数据包装器设置为MySQL数据包,然后复制模式和数据。
  3. 您可以手动转换架构,然后通过CSV使用ETL进程转储/重新加载数据。
  4. 有一些工具可以读取实时MySQL数据库并将数据插入PostgreSQL。