So exportieren Sie Daten von SQL Server 2005 nach MySQL [geschlossen]

86

Ich habe meinen Kopf gegen den SQL Server 2005Versuch geschlagen, viele Daten herauszuholen. Ich habe eine Datenbank mit fast 300 Tabellen erhalten und muss diese in eine MySQL-Datenbank umwandeln. Mein erster Aufruf war die Verwendung von bcp, aber leider erzeugt es keine gültige CSV - Zeichenfolgen sind nicht gekapselt, sodass Sie keine Zeile bearbeiten können, die eine Zeichenfolge mit einem Komma enthält (oder was auch immer Sie als Trennzeichen verwenden). und ich müsste immer noch alle Anweisungen zum Erstellen von Tabellen von Hand schreiben, da CSV Ihnen offensichtlich nichts über die Datentypen sagt.

Was besser wäre, wäre, wenn es ein Tool gäbe, das sowohl eine Verbindung zu SQL Server als auch zu MySQL herstellen könnte, und dann eine Kopie zu erstellen. Sie verlieren Ansichten, gespeicherte Prozeduren, Trigger usw., aber es ist nicht schwer, eine Tabelle zu kopieren, die nur Basistypen von einer Datenbank in eine andere verwendet ... oder?

Kennt jemand ein solches Werkzeug? Es macht mir nichts aus, wie viele Annahmen es macht oder welche Vereinfachungen auftreten, solange es Integer, Float, Datetime und String unterstützt. Ich muss sowieso viel beschneiden, normalisieren usw., damit es mir egal ist, Schlüssel, Beziehungen oder ähnliches zu behalten, aber ich brauche den ersten Datensatz schnell!

Matte
quelle
1
Ich habe einige Leute gehört, die MSSQL2MySQL mit Erfolg verwenden, aber ich kann nicht selbst dafür bürgen.
Greg Hurlman
1
Ich habe gehört, dass SQLYob das kann. < webyog.com/de > hier: < searchsqlserver.techtarget.com/tip/… >
Borjab
Dieses Tool ist genau das, wonach Sie gefragt haben: Full Convert Enterprise . Sie verlieren zwar Ansichten, Prozeduren und Trigger, aber es ist stark für große Tabellen optimiert. Eine andere Lösung (teurer), die alle Objekte (Prozeduren usw.) übersetzt, ist SqlTran SQL Server zu MySQL
Damir Bulic
1
Ähnliche Antwort hier: stackoverflow.com/questions/11619177/…
Jacob
1
@borjab: SQLyog arbeitete in älteren Versionen mit ODBC, funktioniert aber nicht mehr. Daher ist dies keine Option für diesen Job.
BlaM

Antworten:

59

Der beste Weg, den ich gefunden habe, ist das von MySQL bereitgestellte MySQL Migration Toolkit . Ich habe es erfolgreich für einige große Migrationsprojekte verwendet.

Nick Berardi
quelle
2
+1 - Es ist jetzt EOL und MySQL Workbench wird ein Migrations-Plugin (frühere Version 5.2) enthalten, aber verwenden Sie vorerst
Mark Robinson
will keine DATE- oder DATETIME-Spalten konvertieren :(
Robert Ivanc
1
Hinweis: Derzeit ist das MySQL Migration Toolkit nicht für Linux verfügbar (von dev.mysql.com/doc/migration-toolkit/en/… )
mkirk
1
Beachten Sie, dass für das My SQL Migration Toolkit die 32-Bit-Version von JDK 5 Update 8 oder höher erforderlich ist (muss Version 5 sein, Version 6 funktioniert nicht), die Sie hier herunterladen können: tinyurl.com/5snd6y3
casterle
9

Mit MSSQL Management Studio habe ich Tabellen mit der MySQL OLE DB umgestellt. Klicken Sie mit der rechten Maustaste auf Ihre Datenbank und gehen Sie zu "Aufgaben-> Daten exportieren". Dort können Sie eine MsSQL OLE DB-Quelle, die MySQL OLE DB-Quelle, angeben und die Spaltenzuordnungen zwischen den beiden Datenquellen erstellen.

Sie möchten die Datenbank und die Tabellen höchstwahrscheinlich im Voraus auf dem MySQL-Ziel einrichten (beim Export werden die Tabellen automatisch erstellt, dies führt jedoch häufig zu Fehlern). Sie können die Tabellen in MySQL schnell über "Aufgaben-> Skripte generieren" erstellen, indem Sie mit der rechten Maustaste auf die Datenbank klicken. Sobald Ihre Erstellungsskripte generiert wurden, müssen Sie nach Schlüsselwörtern und Typen suchen und diese ersetzen, die in MSSQL bis MYSQL vorhanden sind.

Natürlich können Sie die Datenbank auch wie gewohnt sichern und ein Dienstprogramm finden, das die MSSQL-Sicherung unter MYSQL wiederherstellt. Ich bin mir jedoch nicht sicher, ob es eine gibt.


quelle
9

Die Editionen "Standard", "Developer" und "Enterprise" von SQL Server 2005 verfügen über SSIS , das DTS von SQL Server 2000 ersetzt. SSIS verfügt über eine integrierte Verbindung zu seiner eigenen Datenbank, und Sie können eine Verbindung finden, für die eine andere Person geschrieben hat MySQL. Hier ist ein Beispiel. Sobald Sie Ihre Verbindungen hergestellt haben, sollten Sie in der Lage sein, ein SSIS-Paket zu erstellen, das Daten zwischen den beiden verschiebt.

Ich muss keine Daten von SQLServer nach MySQL verschieben, aber ich stelle mir vor, dass die einmal installierte MySQL-Verbindung genauso funktioniert wie das Verschieben von Daten zwischen zwei SQLServer-DBs, was ziemlich einfach ist.

Sean
quelle
8

Das Rolling Ihrer eigenen PHP-Lösung wird sicherlich funktionieren, obwohl ich nicht sicher bin, ob es eine gute Möglichkeit gibt, das Schema automatisch von einer Datenbank zur anderen zu duplizieren (vielleicht war dies Ihre Frage).

Wenn Sie nur Daten kopieren und / oder ohnehin benutzerdefinierten Code zum Konvertieren zwischen geänderten Schemas zwischen den beiden DBs benötigen, würde ich die Verwendung von PHP 5.2+ und den PDO-Bibliotheken empfehlen. Sie können eine Verbindung mit PDO ODBC herstellen (und MSSQL-Treiber verwenden). Ich hatte viele Probleme, große Textfelder und Mehrbyte-Zeichen von MSSQL mithilfe anderer Bibliotheken in PHP zu übertragen.

pix0r
quelle
6

Ein weiteres Tool wäre die SQLMaestro-Suite . Es ist ein wenig schwierig, das genaue Tool zu finden, aber es gibt eine Vielzahl von Tools, sowohl kostenlos als auch zum Kauf, die eine Vielzahl von Aufgaben für mehrere Datenbankplattformen erledigen. Ich würde vorschlagen, zuerst das Datenassistent-Tool für MySQL zu testen, da ich glaube, dass es das richtige "Import" -Tool hat, das Sie benötigen.

Dillie-O
quelle