Ich bin verzweifelt auf der Suche nach einem Konvertierungstool, um eine große MySQL-Datenbank nach PostGresQL zu konvertieren. Ich brauche das Tool / Skript, um zu sein:
- Kostenlos
- Funktioniert unter Linux
- Einfach zu bedienen und nicht fehlerhaft
- Sie haben tatsächlich versucht und bestätigt, dass dies funktioniert
- Vorzugsweise nicht mit Java oder Ruby geschrieben
Ich habe verschiedene hier aufgeführte Tools ausprobiert , aber keines hat für mich funktioniert.
Danke im Voraus.
mysql
postgresql
linux
hbp
quelle
quelle
Antworten:
Die Migration zwischen zwei sehr unterschiedlichen DBMS erfordert viel mehr als nur die Migration der Daten. Die Migration der Daten ist jedoch normalerweise der einfachste Teil.
Die Art und Weise, die ich ausprobiert habe, ist kostenlos und ich kann bestätigen, dass es funktioniert:
Das Importieren der Daten kann tatsächlich schwierig sein, wenn Sie sich auf das Verhalten von MySQL verlassen, um illegale Daten zu akzeptieren (wie zum Beispiel am 31. Februar).
Ich gehe davon aus, dass dies schneller gehen wird, als nach einem Werkzeug zu suchen, ein paar davon auszuwerten und dann zu versuchen, das von Ihnen gewählte zu verstehen. Aber es hängt davon ab, auf welche Art von "groß" Sie sich beziehen. Wenn mehrere hundert Tische groß sind, ist dies möglicherweise nicht möglich. Wenn sich big nur auf die Anzahl der Zeilen bezieht, ist dies wahrscheinlich der schnellste Weg, dies zu tun.
Es gibt einige Tools wie Liquibase , SchemaSpy oder WbSchemaReport , die ein Datenbankschema in einem von DBMS unabhängigen (XML-) Format sichern können . Mit Liquibase wahrscheinlich am einfachsten zu bedienen. Bei den anderen muss das XSLT manuell geschrieben / erweitert werden, um das generierte XML zu transformieren.
Wenn Sie Trigger und gespeicherte Prozeduren in MySQL verwenden, gibt es meines Erachtens kein automatisiertes Tool, mit dem diese übersetzt werden können, ohne dass anschließend umfangreiche manuelle Korrekturen erforderlich sind. In diesem Fall würden die generierten Prozeduren wahrscheinlich keine erweiterten Funktionen des Ziel-DBMS verwenden .
quelle
Musste es in letzter Zeit machen und da es zu lange gedauert hätte, nach einem Werkzeug zu suchen und damit zu arbeiten, habe ich es per Hand mit vim und substitution-foo gemacht
INT NOT NULL AUTO_INCREMENT
(oder so etwas) mitSERIAL
TEXT
(keine Drehzahlunterschied bei der VerwendungTEXT
,VARCHAR
oder ähnliches)`
ENGINE InnoDB
(oder was auch immer)UNSIGNED
BYTEA
'
und sonst nichtsCONCAT
ein Fallback für nicht standardmäßige Zeichenfolgenverkettungen, bevor 9.1 verwendet wurde'string' || ' string'
"
Jede dieser Kugeln sollte durch eine einzige Ersetzung erfolgen.
Ich habe das Schema und die Daten separat exportiert . Stellen Sie sicher, dass Sie
INSERT
s anstelle von verwendenCOPY
. Wenn nichts los ist, sollten die Daten (fast) keine Bereinigung erfordern. Stellen Sie sicher, dass alles eingeschaltet istUTF-8
. Mit 2 separaten Dateien wird das Schema übersichtlicher und Sie müssen keine 1-GB-Datei bearbeiten.Beim Laden des Schemas erhalten Sie ziemlich detaillierte Informationen, wo ein Fehler auftritt. Daher sollte das Debuggen ziemlich einfach sein.
quelle
Ich werfe das hier raus, habe es noch nie ausprobiert, aber der Tungesten Replicator kann tun, was Sie wollen. Es ist in erster Linie ein Replikations-Tool, aber ich denke, es hat möglicherweise einen Bootstrapping-Prozess, der Ihnen zumindest bei dem Datenstück helfen kann.
quelle