Gibt es ein Befehlszeilentool zum Konvertieren der MySQL-Datenbank nach PostgreSQL? Ich würde auch gerne wissen, ob es eine Möglichkeit gibt, die Datenbank mit dem normalen mysqldump
Befehl zu konvertieren .
Gibt es ein Befehlszeilentool zum Konvertieren der MySQL-Datenbank nach PostgreSQL? Ich würde auch gerne wissen, ob es eine Möglichkeit gibt, die Datenbank mit dem normalen mysqldump
Befehl zu konvertieren .
Antworten:
Hast du es versucht:
mysqldump --compatible=postgresql dbname > export.sql
dann tun Sie dies, um Anführungszeichen zu entgehen
sed "s/\\\'/\'\'/g" export.sql > export1.sql
Möglicherweise muss noch etwas massiert werden. Schauen Sie sich mysqldump doco genauer an.
mysqldump
noch repariert. syntax error at or near "(" LINE 2: "id" int(10) NOT NULL,
Hier sind einige Open-Source-Tools, die sehr hilfreich sein können:
FromMySqlToPostgreSql
ist ein Tool mit umfangreichen Funktionen und sehr einfach zu verwenden.
Es ordnet Datentypen zu, migriert Constraints, Indizes, PKs und FKs genauso wie in Ihrer MySQL-Datenbank.
Unter der Haube wird PostgreSQL COPY verwendet, sodass die Datenübertragung sehr schnell ist.
FromMySqlToPostgreSql geschrieben in PHP (> = 5.4).
pgloader ist ein Tool zum Laden von Daten für PostgreSQL mit dem Befehl COPY. Sein Hauptvorteil gegenüber nur mit
COPY
oder \copy
und die Verwendung eines Foreign Data Wrappers ist das Transaktionsverhalten, bei dem pgloader eine separate Datei mit abgelehnten Daten aufbewahrt, aber weiterhin versucht, einwandfreie Daten in Ihre Datenbank zu kopieren. Das standardmäßige PostgreSQL-Verhalten ist transaktional, was bedeutet, dass jede fehlerhafte Zeile in den Eingabedaten (Datei oder entfernte Datenbank) das gesamte Massenladen für die Tabelle stoppt. pgloader implementiert auch die Neuformatierung von Daten. Ein typisches Beispiel hierfür ist die Umwandlung von MySQL-Datenstempeln 0000-00-00 und 0000-00-00 00:00:00 in PostgreSQLNULL
value (weil unser Kalender nie ein Jahr Null hatte).
Es gibt tatsächlich ein kostenloses Migrationstool, das recht einfach zu verwenden ist und von EnterpriseDB selbst entwickelt wurde. Es kann über das StackBuilder: Migration Toolkit installiert werden
Ich habe kürzlich ein nicht-kostenloses Tool von DBConvert verwendet , um eine Access-Datenbank in Postgres umzuwandeln, und fand, dass es das Geld wert ist, verglichen mit der Zeit, die ich damit verbracht habe, es zuverlässig und kostenlos zu machen. Sie verkaufen ein ähnliches Tool für MySQL <-> Postgres , das ich nicht verwendet habe, aber es kann durchaus erwägenswert sein , es sei denn, Sie interessieren sich nur für Befehlszeilen-Tools.
Falls Sie sich fragen, bin ich in keiner Weise mit ihnen verbunden :-)
Sie können beispielsweise den EnterpriseDB-Migrationsassistenten verwenden.
Es kann OracleDB problemlos migrieren. Für MySQL gibt es jedoch einige Einschränkungen. Beispielsweise werden Ansichten, Trigger und gespeicherte Prozeduren nicht unterstützt.
Weitere Informationen finden Sie unter EDB Migration Toolkit . Ich bin nicht sicher, aber es kann möglich sein, mysql-> oracle-> postgresql zu migrieren, indem ich Ihre gespeicherten Prozeduren speichere (falls vorhanden).
Grep this: Datenbank- und SQL-Migrationstools
Dies ist nur eine Ergänzung der vorhandenen Antworten, die mir bei der Suche nach dieser Lösung geholfen haben. Ich habe FromMySqlToPostgreSql verwendet . Sie müssen lediglich FromMySqlToPostgreSql herunterladen und extrahieren , eine Kopie der Beispielkonfigurationsdatei erstellen, die DB-Verbindungswerte darin festlegen und die Indexdatei mit dem folgenden Befehl ausführen:
php index.php config.xml
Einfach und doch effektiv!
Es gibt ein OpenSource-Tool, das Funktionen zum Konvertieren einer MySQL-Datenbank in eine Postgresql-Datenbank mit Indizes, FKS und Daten bietet.
https://github.com/ggarri/mysql2psql
Mit diesem Tool können Sie auch Schemaänderungen definieren, damit Sie zur Laufzeit einige Aktualisierungen Ihres aktuellen Schemas durchführen können.