2009-03-31 13 views
3

Ich möchte eine bestehende MySQL-Datenbank (etwa 40 Tabellen, 400 MB Daten) zu Postgres migrieren, bevor es größer wird. Ich durchsuchte das Internet und probierte einige Migrationsskripte (einige von ihnen können gefunden werden here). Keiner von ihnen funktioniert nahtlos - wenn es nur ein paar Fehler wäre, die ich manuell beheben müsste, wäre das kein Problem, aber die resultierenden Dumps sehen überhaupt nicht wie gültiges PostgreSQL aus.Wie kann ich leicht von MySQL nach PostgreSQL migrieren?

Hat es jemand geschafft, eine Produktionstabelle zu migrieren, ohne einen vollen Arbeitstag zu verwenden - gibt es eine einfache Lösung für dieses Problem?

Hinweis: Ich würde auch kommerzielle Produkte berücksichtigen (solange die Preisgestaltung noch machbar ist).

+0

Haben Sie den Edelstein "Taps" probiert? –

Antwort

3

Obwohl SQL ein Standard ist, ist es nicht voll genug, um auf jede Server-Software, die Erweiterungen implementiert, zu verzichten. Die Übersetzung von MySQL nach PostgreSQL ist nicht einfach, es sei denn, Ihr Schema ist trivial. Automatische Übersetzungsskripte werden Sie nur so weit bringen.

Der beste Ansatz wäre, das Schema manuell zu übersetzen und dann eigene Übertragungsskripts für die Daten selbst zu schreiben. Sie sollten auch Überprüfungsskripte schreiben, um sicherzustellen, dass das Schema und die Daten korrekt übergeben werden.

Dies ist keine Ausredeantwort. Wenn Ihre Datenbank für die Migration wichtig genug ist, ist es wichtig genug, Zeit für sich selbst zu investieren. Am Ende würden Sie mindestens so viel Zeit damit verbringen, die Macken und subtilen Verwirrungen herauszufinden, als ein automatisches Migrationsskript dazu führen würde, dass Sie die Daten selbst migrieren würden. Aber wenn Sie es selbst tun, haben Sie die Möglichkeit, Funktionen von PostgreSQL zu nutzen, die in MySQL nicht vorhanden sind, sowie die Möglichkeit, Verbesserungen vorzunehmen, die nur aus der Möglichkeit resultieren, etwas ein zweites Mal zu tun.

Beißen Sie die Kugel und tun Sie es.

+1

+1. Als Programmierer wollen wir natürlich alles automatisieren, aber die Wahrheit ist, dass einige Dinge manuell erledigt werden müssen. Wenn verification_time> time_needed_to_do_it_manuell ist, tun Sie es manuell. –

+0

Manchmal brauchen Sie nur jemand anderen, damit Sie erkennen, dass Sie es manuell tun sollten. Vielen Dank. –