Frage

Ich habe die Werkzeuge versucht aufgelistet hier , einige mit mehr Erfolg als andere, aber keine gab mir Syntax gültig postgres verwende ich (etc Tinyint Fehler.) könnte

War es hilfreich?

Lösung

Es gibt eine mysqldump Option, die es ausgegeben PostgreSQL Code macht:

mysqldump --compatible=postgresql ...

Andere Tipps

Nach einiger Zeit auf Google fand ich dieser Beitrag .

  1. Installieren Sie den mysql2psql Juwel mit [sudo] gem install mysql2psql.
  2. Erstellen Sie eine Konfigurationsdatei von mysql2psql ausgeführt wird. Sie erhalten eine Fehlermeldung angezeigt, aber eine mysql2psql.yml Datei erstellt werden soll.
  3. Bearbeiten mysql2psql.yml
  4. Ausführen mysql2psql wieder migrieren Sie Daten.

. Tipp: Setzen Sie force_truncate in Ihrer true Konfigurationsdatei mysql2psql.yml, wenn Sie die PostgreSQL-Datenbank vor der Migration Ihrer Daten gelöscht werden sollen

Ich habe verwendet py-mysql2pgsql . Nach der Installation muss es nur einfache Konfigurationsdatei in yml Format (Quelle, Ziel), z.

# if a socket is specified we will use that
# if tcp is chosen you can use compression
mysql:
 hostname: localhost
 port: 3306
 socket: /tmp/mysql.sock
 username: mysql2psql
 password:
 database: mysql2psql_test
 compress: false
destination:
 # if file is given, output goes to file, else postgres
 file:
 postgres:
  hostname: localhost
  port: 5432
  username: mysql2psql
  password:
  database: mysql2psql_test

Verbrauch:

> py-mysql2pgsql -h
usage: py-mysql2pgsql [-h] [-v] [-f FILE]

Tool for migrating/converting data from mysql to postgresql.

optional arguments:
  -h, --help            show this help message and exit
  -v, --verbose         Show progress of data migration.
  -f FILE, --file FILE  Location of configuration file (default:
                        mysql2pgsql.yml). If none exists at that path,
                        one will be created for you.

Mehr auf seiner Homepage https://github.com/philipsoutham/py-mysql2pgsql .

Es ist ein Stück von Pay-Software auf dieser postgresql Seite aufgelistet: http://www.postgresql.org/download/products/1

und das ist auf pgFoundry: http://pgfoundry.org/projects/mysql2pgsql/

Diese Seite die Syntax Unterschiede auflistet, sondern eine einfache Arbeits Abfrage Konverter habe ich nicht noch nicht gefunden. Mit Hilfe eines ORM Paket anstelle von rohen SQL könnte diese Probleme vermeiden.

Ich bin Hacking derzeit einen Konverter für eine Legacy-Code-Basis auf:

function mysql2pgsql($mysql){
    return preg_replace("/limit (\d+), *(\d+)/i", "limit $1 offset $2", preg_replace("/as '([^']+)'/i", 'as "$1"', $mysql)); // Note: limit needs order
}

Für CREATE Aussagen, SQLINEs wandelt die meisten von ihnen online. Ich hatte immer noch die mysqldump danach zu bearbeiten, aber:

"mediumtext" -> "text", "^LOCK.*" -> "", "^UNLOCK.*" -> "", "`" -> '"', "'" -> "''" in 'data', "0000-00-00" -> "2000-01-01", deduplicate constraint names, " CHARACTER SET utf8 " -> " ".
"int(10)" -> "int" was missed in the last table, so pass that part of the mysqldump through http://www.sqlines.com/online again.

Versuchen Sie dieses, es funktioniert wie Charme !!

http://www.sqlines.com/online

Hier finden Sie aktuelle PG Foundry , zusätzliche Dienstprogramme für Postgres neigen, dort zu leben. Ich glaube, dass das Werkzeug Sie suchen allerdings nicht vorhanden ist.

Sie werden wahrscheinlich nie ein Werkzeug für eine solche Aufgabe erhalten, die für Sie alle Ihre Arbeit tun würde. hergestellt werden, selbst zu tun einige Refactoring arbeiten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top