2017-09-23 5 views
0

Ich versuche https://www.yelp.com/dataset/documentation/sql in eine PostgreSQL-Instanz zu importieren. Es hat Probleme mit Akzentmarkierungen/Backtick. Gibt es anders als einen Charakter ersetzen, gibt es einen anderen Weg, damit umzugehen?psql Wiederherstellung SQL-Dump Syntaxfehler

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

Sie verwenden wahrscheinlich den MySQL-Code für die Postgres-Datenbank. Stellen Sie sicher, dass Sie den richtigen Code heruntergeladen haben. –

+0

Sie haben nur eine Datei zum Download. https://www.yelp.com/dataset/download – tashfeen

+0

Gibt es eine Möglichkeit, MySQL-Dump in PostgeSQL-Dump zu konvertieren? – tashfeen

Antwort

0

Dies sind typische MySQL-Syntaxprobleme, die PostgreSQL dem Standard entspricht und daher nicht unterstützt. Es gibt ein paar verschiedene Konverter auf GitHub, die helfen könnten. Als ich das zuletzt tun musste, gab es Tools, um Textdumps zu konvertieren. Sie haben nicht perfekt funktioniert, aber sie haben Dinge nahe genug. Wenn Sie sich die Werkzeuge heute ansehen, gehen sie davon aus, dass Sie eine tatsächliche MySQL-Datenbank und nicht nur eine Dump-Datei haben.

Es sieht also so aus, als würde man heute die Daten in MySQL laden und dann nach PostgreSQL verschieben. In diesem Zusammenhang scheinen Sie vier Optionen zu haben, die ich für die Umwandlung des Schemas und der Daten in Betracht ziehen kann:

  1. Es gibt Werkzeuge, um XML Dumps von MySQL zu konvertieren und diese in PostgreSQL zu laden.
  2. Sie könnten einen Fremddatenwrapper von PostgreSQL auf die MySQL-Datenbank einrichten und dann die Schemas und Daten kopieren.
  3. Sie könnten die Schemas manuell konvertieren und dann die Daten mithilfe eines ETL-Prozesses über CSV ablegen/neu laden.
  4. Es gibt Tools, um eine Live-MySQL-Datenbank zu lesen und die Daten in PostgreSQL einzufügen.
+0

Danke! Ich habe ein paar dieser Skripte gefunden, bin aber auf kleine Probleme gestoßen, wie du erwähnt hast. Am Ende ging die Last in der MySQL-Route runter. – tashfeen

+0

Sie haben immer noch den Fremddaten-Wrapper-Ansatz. Dann wäre das Bewegen einfach. https://github.com/EnterpriseDB/mysql_fdw –

+0

Als Alternative zum Fremddaten-Wrapper verwenden Sie https://github.com/dimitri/pgloader, das die Daten von MySQL nach Postgresql importiert – leezu