Gibt es ein einfaches Werkzeug mysql postgresql Syntax zu konvertieren?
-
01-07-2019 - |
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
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 .
- Installieren Sie den mysql2psql Juwel mit
[sudo] gem install mysql2psql
. - Erstellen Sie eine Konfigurationsdatei von
mysql2psql
ausgeführt wird. Sie erhalten eine Fehlermeldung angezeigt, aber einemysql2psql.yml
Datei erstellt werden soll. - Bearbeiten
mysql2psql.yml
- 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.