Importeer MySQL-database in een MS SQL Server

Ik heb een .sql-bestand van een MySQL-dump met tabellen, definities en gegevens die in deze tabellen moeten worden ingevoegd. Hoe kan ik deze database die wordt weergegeven in het dumpbestand converteren naar een MS SQL Server-database?


Antwoord 1, autoriteit 100%

Gebruik SQL Servermigratie-assistent (SSMA)

Naast MySQL ondersteunt het Oracle, Sybase en MS Access.

Het lijkt behoorlijk slim te zijn en zelfs niet-triviale overdrachten aan te kunnen. Het heeft ook een opdrachtregelinterface (naast de GUI), dus theoretisch kan het worden geïntegreerd in een batchlaadproces.

Dit is de huidige downloadlink voor MySQL-versie https:// www.microsoft.com/en-us/download/details.aspx?id=54257

De huidige (juni 2016) stabiele versie 6.0.1 crasht met het huidige (5.3.6) MySQL ODBC-stuurprogramma tijdens het overzetten van gegevens. Alles 64 bits.
De 5.3 versie met de 5.1.13 ODBC driver werkt prima.


Antwoord 2, autoriteit 27%

Ik raad je aan om mysqldumpals volgt te gebruiken:

mysqldump --compatible=mssql

phpMyAdminis nog steeds een web-app en kan mogelijk beperkingen hebben voor grote databases(uitvoeringstijd script, toewijsbaar geheugen enzovoort).


Antwoord 3, autoriteit 22%

Ik heb hiervoor een manier gevonden op het net

Het vereist wat werk, omdat het tafel voor tafel moet worden gedaan. Maar hoe dan ook, ik zou de tabellen, gegevens en beperkingen naar een MS SQL-database kunnen kopiëren.

Hier is de link

http://www.codeproject.com/KB/ database/migrate-mysql-to-mssql.aspx


Antwoord 4, autoriteit 11%

Als u een export uitvoert met PhpMyAdmin, kunt u de sql-compatibiliteitsmodus overschakelen naar ‘MSSQL’. Op die manier voer je gewoon het geëxporteerde script uit op je MS SQL-database en je bent klaar.

Als u PhpMyAdmin niet kunt of wilt gebruiken, is er ook een compatibiliteitsoptie in mysqldump, maar persoonlijk zou ik liever hebben dat PhpMyAdmin het voor mij doet.


Antwoord 5, autoriteit 11%

Hier is mijn aanpak voor het importeren van .sql-bestanden naar MS SQL:

  1. Tabel exporteren vanuit MySQL met --compatible=mssqlen --extended-insert=FALSEopties:

    mysqldump -u [username] -p --compatible=mssql --extended-insert=FALSE db_name table_name > table_backup.sql

  2. Split het geëxporteerde bestand met PowerShell met 300000 regels per bestand:

    $i=0; Get-Content exported.sql -ReadCount 300000 | %{$i++; $_ | Out-File out_$i.sql}

  3. Voer elk bestand uit in MS SQL Server Management Studio

Er zijn enkele tips hoe de invoegingen te versnellen.

Een andere benadering is het gebruik van mysqldump –whereoptie. Door deze optie te gebruiken, kunt u uw tabel op elke voorwaarde splitsen die wordt ondersteund door de wheresql-clausule.


Antwoord 6, autoriteit 8%

Ik had vandaag een soortgelijk probleem – ik moest een grote tabel (5 miljoen rijen) van MySql naar MS SQL kopiëren.

Dit zijn de stappen die ik heb uitgevoerd (onder Ubuntu Linux):

  1. Een tabel gemaakt in MS SQL waarvan de structuur overeenkomt met de brontabel in MySql.

  2. MS SQL-opdrachtregel geïnstalleerd: https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-setup-tools#ubuntu

  3. Tabel van MySql naar een bestand gedumpt:

mijnsqldump \
  --compacte \
  --volledig-invoegen \ 
--geen-maak-info \
  --compatible=mssql \
  --extended-insert=FALSE \
  --host "$MYSQL_HOST" \
  --gebruiker "$MYSQL_USER" \
  -p"$MYSQL_PASS" \
  "$MYSQL_DB" \
  "$TABEL" > "$FILENAME"
  1. In mijn geval was het dumpbestand vrij groot, dus besloot ik het op te splitsen in een aantal kleine stukjes (elk 1000 regels) – split --lines=1000 "$FILENAME" part-

  2. Eindelijk herhaalde ik deze kleine bestanden, deed wat tekstvervangingen en voerde de stukjes één voor één uit tegen de MS SQL-server:

export SQLCMD=/opt/mssql-tools/bin/sqlcmd
x=0
voor bestand in deel-*
doen
 echo "Bestand [$file] exporteren naar MS SQL. $x duizend(en) verwerkt"
 # vervangt \' door ''
 sed -i "s/\\\'/''/g" "$bestand"
 # verwijdert alles "
 sed -i 's/"//g' "$bestand"
 # staat toe om records in te voegen met gespecificeerde 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 "$bestand"
 echo ""
 echo ""
 x=$((x+1))
gedaan
echo "Gereed"

Natuurlijk moet je mijn variabelen vervangen, zoals $AZURE_SERVER, $TABLE, enz. met de jouwe.

Hopelijk helpt dat.


Antwoord 7, autoriteit 5%

Voor mij werkte het het beste om alle gegevens te exporteren met dit commando:

mysqldump -u USERNAME -p --all-databases --complete-insert --extended-insert=FALSE --compatible=mssql > backup.sql

–extended-insert=FALSE is nodig om de importlimiet van mssql 1000 rijen te vermijden.

Ik heb mijn tabellen gemaakt met mijn migratietool, dus ik weet niet zeker of CREATE uit het bestand backup.sql zal werken.

In MSSQL’s SSMS moest ik de gegevenstabel voor tabel importeren met de IDENTITY_INSERT AAN om de ID-velden te schrijven:

SET IDENTITY_INSERT dbo.app_warehouse ON;
GO 
INSERT INTO "app_warehouse" ("id", "Name", "Standort", "Laenge", "Breite", "Notiz") VALUES (1,'01','Bremen',250,120,'');
SET IDENTITY_INSERT dbo.app_warehouse OFF;
GO 

Als je relaties hebt, moet je eerst het kind importeren en dan de tabel met de externe sleutel.


Antwoord 8

U kunt ook ‘ODBC’ + ‘SQL Server Import en Export Wizard’ gebruiken.
Onderstaande link beschrijft het:
https://www.mssqltips.com/sqlservertutorial /2205/mysql-naar-sql-server-data-migration/

voer hier de afbeeldingsbeschrijving in


Antwoord 9

Uitvoeren:

mysqldump -u root -p your_target_DB --compatible=mssql > MSSQL_Compatible_Data.sql

Wilt u een procesbalk zien?

pv mysqldump -u root -p your_target_DB --compatible=mssql > MSSQL_Compatible_Data.sql

Antwoord 10

u kunt de sqlie-toepassing gebruiken voor het converteren van mysql naar sqlserver
je kunt deze video bekijken
https://www.youtube.com/watch?v=iTVEqys_vTQ&t= 108s

Other episodes