2017-09-23 52 views
0

我想将https://www.yelp.com/dataset/documentation/sql导入PostgreSQL实例。它有重音标记/反色问题。除了做一个角色替换之外,还有其他方法可以解决这个问题吗?psql恢复sql转储语法错误

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`; 
+2

您可能正在使用Postgres数据库的MySQL代码。确保你已经下载了正确的代码。 –

+0

他们只有一个文件需要下载。 https://www.yelp.com/dataset/download – tashfeen

+0

有没有办法将MySQL转储转换为PostgeSQL转储? – tashfeen

回答

0

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

所以现在看来​​,解决这个问题的适当方法是将数据加载到MySQL中,然后将其移动到PostgreSQL。在这方面,您似乎有四个选项可供我转换模式和数据:

  1. 有一些工具可以将MySQL转储的XML转储文件加载到PostgreSQL中。
  2. 你可以从你的PostgreSQL外国数据包装成立于MySQL数据库,然后复制架构和数据。
  3. 你可以手动转换模式,然后倾倒/使用通过CSV ETL过程重新加载数据。
  4. 有工具可以读取实时MySQL数据库并将数据插入PostgreSQL。
+0

谢谢!我最终找到了一些这些脚本,但遇到了你提到的小问题。结束了MySQL路由中的负载。 – tashfeen

+0

您仍然有外国数据包装方法。然后移动会很简单。 https://github.com/EnterpriseDB/mysql_fdw –

+0

作为替代外国数据包装使用https://github.com/dimitri/pgloader从MySQL导入数据到Postgresql – leezu