2011-01-11 11 views
1

Ich denke über eine Migration von MySQL nach PostgreSQL für meine Webanwendung nach, aber es fällt mir wirklich schwer, meine bestehende MySQL-Datenbank in PostgreSQL umzuwandeln.Migration von MySQL zu Postgresql mit automatischen Inkrementen - wie?

Ich habe versucht:

  • mysldump mit --compatible = postgresql
  • Migrationsassistenten von EnterpriseDB
  • Postgresql Data Wizard von EMS
  • DBConvert von DMSoft

und KEINER Die obigen Programme machen einen guten Job um meine Datenbank zu konvertieren!

Ich habe ein paar Perl und Python Scripts gesehen, um mysql in postgresql umzuwandeln, aber ich kann nicht herausfinden, wie man sie benutzt .... (Ich habe ActivePerl installiert und verstehe nicht, was ich tun soll führe das Skript aus!)

Ich benutze Auto Increment Felder (als Primärschlüssel) die ganze Zeit, und diese werden einfach ignoriert ... Ich verstehe, dass Postgresql Auto-inkrementiert auf andere Weise (mit Sequenzen), aber es kann nicht so schwer für MIGRATION-Software, das zu implementieren, oder ist es?

Hat jemand noch mehr Glück eine MySQL-Datenbank mit auto-Schritten als Primärschlüssel konvertieren?

+1

DBConvert DID erstellen Sequenzen ... aber ich denke, die letzte Nummer wurde nicht korrekt eingestellt, da das Hinzufügen eines Datensatzes einen Fehler ergibt. Wenn ich alle Datensätze aus der Tabelle entferne, funktioniert das automatische Inkrement. Noch nicht perfekt, aber zumindest bekomme ich ein Gefühl dafür, wie diese Sequenzen für Autoinkrement aussehen sollten .... – Dylan

Antwort

2

Ich weiß, das ist wahrscheinlich nicht die Antwort, die Sie suchen, aber: Ich in „automatisierten“ Migrationstool nicht glauben.

Nehmen Sie Ihre vorhandenen SQL-Skripts, die Ihre Datenbankschema erstellen, eine Suche und ersetzen Sie die notwendigen Datentypen (Autowert Karten serial, die macht die ganze Sequenz automatisch für Sie Umgang), entfernen Sie alle „engine =“ Sachen und Führen Sie dann das neue Skript gegen Postgres aus.

Dump die alte Datenbank in flache Dateien und importieren Sie sie in das Ziel.

Ich habe dies mehrmals mit Beispieldatenbanken durchgeführt, die für MySQL bestimmt waren und es dauert wirklich nicht so lange.

Wahrscheinlich so lange wie versuchen, all die verschiedenen „automatisierte“ Tools.

+0

Danke, ich dachte nur, dass so viele MySQL-Benutzer auf PostgreSQL upgraden müssen, bevor es einen gibt perfektes Werkzeug, das alles für mich getan hat. Das Problem ist, dass ich eine Datenbank mit mehr als 200 Tabellen habe und wahrscheinlich mehrere Conversions durchführen muss, während ich Postgresql ausprobiere (und dabei immer noch das bestehende MySQL beibehalte). Ich werde in 'serial' schauen, habe das noch nicht gefunden ... – Dylan

+0

Serieller Datentyp: http://www.postgresql.org/docs/current/static/datatype-numeric.html#DATATYPE-SERIAL –

0

Auch wenn Sie mit allen „PostgreSQL gotchas“ vertraut, kann jeder Schritt von Hand tun, eine Menge Zeit in Anspruch nehmen, vor allem, wenn Ihr db „groß“ ist. Versuchen Sie einige   other scripts/tools.

1

Warum nicht ein ETL-Tool verwenden? Du musst dir keine Gedanken über Depots oder solche Sachen machen. Ich habe nach PostgresSQL und MySQL migriert und hatte keine Probleme mit den Autoinkrementfeldern.

Sie müssen es einfach nur die Verbindungsanmeldeinformationen und das ist wissen. Ich persönlich benutze Pentaho (es ist Open Source).

Herunterladen Pentaho ETL von http://kettle.pentaho.org/

Dekomprimieren und laufen Pentaho (.bat Datei Löffel.bat)

Erstellen Sie einen neuen Job:

erstellen DB-Verbindung für die Source-Datenbank (PostgreSQL) - über das Menü: Extras → Assistenten → Anlegen Datenbank-Verbindung (F3) erstellen DB-Verbindung für das Ziel-Datenbank (Mysql) - unter Verwendung der oben beschriebenen Technik.

Führen Sie den Assistenten aus: Extras → Assistent → Tabellen kopieren (Strg-F10).

Wählen Sie die Quelle (linkes Dialogfeld) und das Ziel (linkes Dialogfeld). Klicken Sie auf Fertig stellen.

Der Job wird generiert - Führen Sie den Job aus.

Wenn Sie Hilfe benötigen, lassen Sie es mich wissen.

+0

Sie sind Sir genial ! –

+0

@RizwanPatel Froh, zu helfen :) – Nick

0

Ich weiß, dass dies eine alte Frage ist, aber ich habe gerade das gleiche Problem bei der Migration von MySQL nach Postgres bekommen. Nachdem ich mehrere Migrationstools aus dem besten herausprobiert habe, die ich finden konnte, die Ihre Datenbankstruktur so sauber wie möglich migrieren wird, war Pgloader https://github.com/dimitri/pgloader/ es wird sich darum kümmern, die Auto Increment to Postgres Sequenzen zu ändern, kein Problem und es ist super schnell.

+0

aber pgloader arbeiten nur in Open-Source-Ökosystem, in win dev Bit des Problems gibt es damit! –

Verwandte Themen