2017-09-23 76 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