Ich habe eine .sql-Datei aus einem MySQL-Dump mit Tabellen, Definitionen und Daten, die in diese Tabellen eingefügt werden sollen. Wie kann ich diese in der Sicherungsdatei dargestellte Datenbank in eine MS SQL Server-Datenbank konvertieren?
Im Netz habe ich dafür einen Weg gefunden
Es erfordert ein bisschen Arbeit, weil es Tabelle für Tabelle zu erledigen ist. Ich könnte aber trotzdem die Tabellen, Daten und Einschränkungen in eine MS SQL-Datenbank kopieren.
Hier ist der Link
http://www.codeproject.com/KB/database/migrate-mysql-to-mssql.aspx
Verwenden Sie SQL Server-Migrationsassistent (SSMA)
Neben MySQL werden Oracle, Sybase und MS Access unterstützt.
Es scheint ziemlich intelligent und in der Lage zu sein, auch nicht triviale Übertragungen abzuwickeln. Es hat auch eine Befehlszeilenschnittstelle (zusätzlich zur GUI), so dass es theoretisch in einen Stapelverarbeitungsprozess integriert werden kann.
Dies ist der aktuelle Download-Link für die MySQL-Version http://www.Microsoft.com/de-de/download/details.aspx?id=42657
Die aktuelle (Juni 2016) stabile Version 6.0.1 stürzt mit dem aktuellen (5.3.6) MySQL-Treiber ODBC während der Datenübertragung ab. Alles 64-Bit. Die Version 5.3 mit dem Treiber 5.1.13 ODBC funktioniert einwandfrei.
Ich schlage vor, dass Sie mysqldump wie folgt verwenden:
mysqldump --compatible=mssql
phpMyAdmin ist immer noch eine Web-App und kann möglicherweise Einschränkungen für große Datenbanken (Skriptausführungszeit, zuweisbarer Speicher usw.) haben.
Hier ist mein Ansatz für das Importieren von .sql-Dateien in MS SQL:
Exportieren Sie die Tabelle aus MySQL mit den Optionen --compatible=mssql
und --extended-insert=FALSE
:
mysqldump -u [username] -p --compatible=mssql --extended-insert=FALSE db_name table_name > table_backup.sql
Teilen Sie die exportierte Datei mit PowerShell in 300000 Zeilen pro Datei:
$i=0; Get-Content exported.sql -ReadCount 300000 | %{$i++; $_ | Out-File out_$i.sql}
Führen Sie jede Datei in MS SQL Server Management Studio aus
Es gibt einige Tipps wie Sie die Einsätze beschleunigen können .
Ein anderer Ansatz ist die Verwendung der mysqldump –where
-Option . Mit dieser Option können Sie Ihre Tabelle unter jeder Bedingung aufteilen, die von der Klausel where
sql unterstützt wird.
Wenn Sie mit PhpMyAdmin exportieren, können Sie den SQL-Kompatibilitätsmodus auf 'MSSQL' umstellen. Auf diese Weise führen Sie einfach das exportierte Skript für Ihre MS SQL-Datenbank aus und fertig.
Wenn Sie PhpMyAdmin nicht verwenden können oder wollen, gibt es auch eine Kompatibilitätsoption in mysqldump , aber ich persönlich würde PhpMyAdmin lieber für mich erledigen.
Ich hatte heute ein sehr ähnliches Problem - ich musste eine große Tabelle (5 Millionen Zeilen) von MySql in MS SQL kopieren.
Hier sind die Schritte, die ich gemacht habe (unter Ubuntu Linux):
In MS SQL wurde eine Tabelle erstellt, deren Struktur mit der Quelltabelle in MySql übereinstimmt.
Installierte MS SQL-Befehlszeile: https://docs.Microsoft.com/de-de/sql/linux/sql-server-linux-setup-tools#ubuntu
Tabelle von MySql in eine Datei gespeichert:
mysqldump\ --kompakt \ --complete-insert\ --no-create-info\ --compatible = mssql\ --extended-insert = FALSE\ --Host "$ MYSQL_Host"\ --user "$ MYSQL_USER"\ -p "$ MYSQL_PASS"\ "$ MYSQL_DB"\ "$ TABLE"> "$ FILENAME"
In meinem Fall war die Dump-Datei ziemlich groß, weshalb ich mich entschied, sie in mehrere kleine Teile (jeweils 1000 Zeilen) aufzuteilen - split --lines=1000 "$FILENAME" part-
Schließlich habe ich diese kleinen Dateien durchlaufen, einige Textersetzungen vorgenommen und die Teile nacheinander gegen den MS SQL-Server ausgeführt:
export SQLCMD =/opt/mssql-tools/bin/sqlcmd x = 0 für die Datei in Teil - * do echo "Exportieren der Datei [$ file] in MS SQL. Verarbeitete $ x Tausendstel" # ersetzt\'durch' ' sed -i "s/\\\ '/' '/ g" "$ file" # entfernt alle " sed -i 's /" // g' "$ file" # erlaubt das Einfügen von Datensätzen mit der angegebenen PK (id) sed -i "1s/^/SET IDENTITY_INSERT $ TABLE ON;\n /" "$ file" "$ SQLCMD" -S "$ Azure_SERVER" -d "$ Azure_DB" -U "$ Azure_USER" -P "$ Azure_PASS" -i "$ file" echo "" echo "" x = $ ((x + 1)) fertig Echo "Fertig"
Natürlich müssen Sie meine Variablen wie $Azure_SERVER
, $TABLE
, e.t.c. ersetzen. mit Ihnen.
Hoffentlich hilft das.
Lauf:
mysqldump -u root -p your_target_DB --compatible=mssql > MSSQL_Compatible_Data.sql
Möchten Sie eine Prozessleiste sehen?
pv mysqldump -u root -p your_target_DB --compatible=mssql > MSSQL_Compatible_Data.sql
Sie können auch 'ODBC' + 'SQL Server-Import- und -Export-Assistent' verwenden. Der nachfolgende Link beschreibt dies: https://www.mssqltips.com/sqlservertutorial/2205/mysql-to-sql- Server-Datenmigration/