it-swarm.com.de

Importieren Sie die MySQL-Datenbank in einen MS SQL Server

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?

76
marionmaiden

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

13
marionmaiden

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.

55
Zar Shardan

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.

15
deklin

Hier ist mein Ansatz für das Importieren von .sql-Dateien in MS SQL:

  1. 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

  2. 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}

  3. 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.

7
Vladislav

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.

5
Whakkee

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):

  1. In MS SQL wurde eine Tabelle erstellt, deren Struktur mit der Quelltabelle in MySql übereinstimmt.

  2. Installierte MS SQL-Befehlszeile: https://docs.Microsoft.com/de-de/sql/linux/sql-server-linux-setup-tools#ubuntu

  3. 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" 
  1. 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-

  2. 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.

3

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
0

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/

enter image description here

0
amir