Hallo!
Also ich bin jetzt die ganze Nacht schon dabei eine Datenbank von MySQL nach PostgreSQL zu portieren. Das erweist sich als schwieriger, als ich mir das vorgestellt habe.
Und dabei habe ich schon beim erzeugen der MySQL-DB versucht drauf zu achten möglichst wenig MySQL-spezifisches zu verwenden. Aber trotzdem gibt es Probleme ohne Ende.
Als erstes habe ich mal einen MySQL-Dump erzeugt. Ich wollte versuchen daraus SQL-Statemenst zu basteln, die sich in PostgreSQL einlesen lassen.
Natürlich habe ich im Internet ein bisschen gesucht, und einige Artikel zum Thema gefunden, aber so eine richtig zuverlässige Lösung habe ich nicht gefunden. Ich habe ein PHP-Script gefunden, was einige Ersetzungen macht (http://martin.f2o.org/php/my2pgsql).
Dann habe ich noch einige eigene Anpassungen vorgenommen.
Als erstes habe ich die Kommentare von # auf -- geändert.
Dann habe ich auto-increment entfernt.
Dann COMMENT auskommentiert.
tinyint gegen smallint ersetzt.
Naja, es waren noch zig Fehler drin. z.B. darf man keinen Spaltennamen wie "user" verwenden, den muss man dann per " einschließen.
Dann stehen die Index-Definitionen nicht im CREATE-Statement sondern in eigenen Statements...
Ich habe fast 100 Tabellen, und ich würde schätzen in jeder 2. oder 3. hatte ich einen neuen Syntax-Error.
Naja, nach zig Stunden hatte ich dann einmal alles übertragen, aber ich bin mir jetzt nicht wirklich sicher dass alles wirklich so ist wie es in MySQL mal war. Nur lässt sich das schlecht testen, möglicherweise (oder eher mit ziemlicher Sicherheit) bemerke ich Fehler erst später, und das wäre natürlich schlecht.
Die Anwendung die das Ganze verwendet läuft mit PHP und PEAR::DB, das kann ich also recht einfach umswitchen.
Jetzt wollte ich mal fragen ob hier jemand Erfahrung mit der Thematik hat, oder gute Seiten zum Thema kennt, oder noch besser, ein zuverlässiges Tool welches die Übersetzung übernimmt.
Ich habe noch einige andere Scripte gesehen, aber keines wo ich wirklich vertrauen zu hatte, naja, das was ich oben verwendet habe gehört jedenfalls zu den schlechteren, denn danach waren noch wirklich viele Fehler drin. Hat hier vielleicht jemand Erfahrung mit einem besseren Script/Tool?
Oder kennt jemand noch ne gute Seite zu den Inkompatibiltäten zwischen diesen und vielleicht auch anderen Datenbanken? Also auch zu anderen SQL-Commands als CREATE, vor allem auch zu SELECT...
Viele Grüße
Andreas