2008-08-01 9 views
79

Ich habe meinen Kopf gegen SQL Server 2005 schlagen versucht, eine Menge Daten zu bekommen. Ich habe eine Datenbank mit fast 300 Tabellen erhalten und muss diese in eine MySQL-Datenbank umwandeln. Mein erster Aufruf war, bcp zu verwenden, aber leider erzeugt es keine gültige CSV - Zeichenfolgen sind nicht gekapselt, so dass Sie keine Zeile mit einem String mit einem Komma darin behandeln können (oder was auch immer Sie als Trennzeichen verwenden) und ich müsste immer noch alle create table-Anweisungen schreiben, da CSV offensichtlich nichts über die Datentypen sagt.Wie Sie Daten von SQL Server 2005 nach MySQL exportieren

Was wäre besser, wenn es ein Werkzeug gäbe, das sich sowohl mit SQL Server als auch mit MySQL verbinden könnte, dann mache eine Kopie. Sie verlieren Ansichten, gespeicherte Prozeduren, Trigger usw., aber es ist nicht schwer, eine Tabelle zu kopieren, die nur Basistypen von einem DB zu einem anderen verwendet ... ist es?

Weiß jemand von solch einem 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 eine Menge Beschneiden, Normalisieren usw. machen, also ist es mir egal, Schlüssel, Beziehungen oder ähnliches zu behalten, aber ich brauche die ersten Daten schnell!

+1

Ich habe gehört, dass SQLYob es tun kann. hier: borjab

+1

Ich habe ein paar Leute gehört mit [MSSQL2MySQL] (http://www.kofler.cc/mysql/mssql2mysql.html) mit Erfolg, aber ich kann nicht selbst dafür verbürgen. –

+0

Dieses Tool ist genau das, wonach Sie gefragt haben: [Full Convert Enterprise] (http://www.spectralcore.com/fullconvert/). Wahr, Sie verlieren Ansichten, Prozeduren und Trigger, aber es ist für große Tabellen optimiert. Eine andere (teurere) Lösung, die alle Objekte (Prozeduren usw.) übersetzt, ist [SqlTran SQL Server zu MySQL] (http://www.sqltran.com/sql-server-to-mysql/) –

Antwort

7

Rolling Ihre eigene PHP-Lösung wird sicherlich funktionieren, obwohl ich nicht sicher bin, ob es eine gute Möglichkeit ist, das Schema automatisch von einem DB zum anderen zu duplizieren (vielleicht war dies Ihre Frage).

Wenn Sie nur Daten kopieren und/oder benutzerdefinierten Code zum Konvertieren zwischen geänderten Schemas zwischen den beiden DBs benötigen, würde ich PHP 5.2+ und die PDO-Bibliotheken empfehlen. Sie können sich mit PDO ODBC verbinden (und MSSQL-Treiber verwenden). Ich hatte viele Probleme damit, große Textfelder und Multi-Byte-Zeichen aus MSSQL mit anderen Bibliotheken in PHP zu bringen.

5

Ein anderes Tool zum Testen wäre die SQLMaestro-Suite - http://www.sqlmaestro.com Es ist ein wenig schwierig, das genaue Werkzeug zu nageln, aber sie haben eine Vielzahl von Werkzeugen, sowohl frei als auch zum Kauf, die eine Vielzahl von Aufgaben für mehrere Datenbankplattformen behandeln . Ich würde vorschlagen, das Data Wizard-Tool zuerst für MySQL zu testen, da ich glaube, dass es das richtige "Import" -Tool haben wird, das Sie brauchen.

58

Der beste Weg, den ich gefunden habe, ist die MySQL Migration Toolkit von MySQL zur Verfügung gestellt. Ich habe es erfolgreich für einige große Migrationsprojekte verwendet.

+2

+1 - Es ist jetzt EOL, und MySQL Workbench wird ein Migrations-Plugin (frühere Version 5.2) enthalten, aber jetzt verwenden Sie den folgenden Link: http://dev.mysql.com/downloads/gui-tools/5.0. html –

+0

will nicht DATE oder DATETIME Spalten konvertieren :( –

+1

Hinweis: Derzeit ist das MySQL Migration Toolkit nicht für Linux verfügbar (http://dev.mysql.com/doc/migration-toolkit/en/gui- tools-installation-linux.html) – mkirk

8

SQL Server 2005 "Standard", "Developer" und "Enterprise" Editionen haben SSIS, die DTS von Sql Server 2000 ersetzt. SSIS hat eine integrierte Verbindung zu seiner eigenen DB, und Sie können eine Verbindung finden, die jemand anders hat für MySQL geschrieben. Here ist ein Beispiel. Sobald Sie Ihre Verbindungen haben, sollten Sie in der Lage sein, ein SSIS-Paket zu erstellen, das Daten zwischen den beiden verschiebt.

Ich musste nicht Daten von SQlServer nach MySQL verschieben, aber ich stelle mir vor, dass sobald die MySQl-Verbindung installiert ist, es genauso wie das Verschieben von Daten zwischen zwei SQLServer-DBs funktioniert, was ziemlich einfach ist.

8

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

Wahrscheinlich möchten Sie die Datenbank und Tabellen im Voraus auf dem MySQL-Ziel einrichten (der Export möchte die Tabellen automatisch erstellen, was jedoch häufig zu Fehlern führt). Sie können die Tabellen in MySQL schnell erstellen, indem Sie "Aufgaben-> Skripte generieren" durch Rechtsklick auf die Datenbank ausführen. Sobald Ihre Erstellungsskripte generiert wurden, müssen Sie die Schlüsselwörter und Typen, die in MSSQL vorhanden sind, schrittweise durchsuchen und durch MYSQL ersetzen.

Natürlich können Sie auch die Datenbank wie normal sichern und ein Dienstprogramm finden, das die MSSQL-Sicherung auf MYSQL wiederherstellen wird. Ich bin mir aber nicht sicher ob es einen gibt.

Verwandte Themen