sql >> Database teknologi >  >> RDS >> Mysql

Sådan migreres MS SQL-database, der kører på fjernmaskine, til min lokale MySQL-database, der kører på linux, og bevarer kodning

Ved at bruge MySQL Workbench har jeg prøvet disse kombinationer, ingen af ​​dem virkede:

ekstern MS SQL> ekstern MySQL native ODBC driver

ekstern MS SQL> ekstern MySQL ODBC DataSource-driver

ekstern MS SQL> ekstern MySQL freeTDS ODBC-driver (med eller uden UTF-8)

virtual MS SQL> virtuel MySQL native ODBC-driver

virtual MS SQL> virtuel MySQL ODBC DataSource-driver

virtuel MS SQL> virtuel MySQL freeTDS ODBC-driver (med eller uden UTF-8)

I begge disse tilfælde satte enten migreringsprocessen fast (Ikke reagerende Workbench), eller tegnene blev ikke overført korrekt.

Den samlede tid for forsøg og fejl var omkring 12 timer.

Her deler jeg en måde med dig på, hvordan jeg var i stand til at migrere hele MS SQL-databasen til min lokale MySQL-server, der kører på min udviklermaskine.

Da jeg oprettede forbindelse til den eksterne W10-maskine via Remote Desktop Connection (RDC) fra min VirtualBox-maskine, ville jeg først fjerne dette ekstra trin for at gøre tingene lettere.

  1. Hvis du ikke har endnu, download og installer gratis Virtual Box-maskine som Microsoft tilbyder og start den

  2. fra denne virtuelle maskine start RDC og før tilslutning, tilføj lokal disk på den virtuelle maskine for at være tilgængelig på fjernmaskine

  3. på fjernmaskine start SQL Server management studio og lav en sikkerhedskopi af databasen (Højreklik på den ønskede database, Opgaver> Sikkerhedskopiering..., gem backupfil på disken)

  4. kopier denne backup-fil til dit drev på den virtuelle maskine ved at navigere til Netværk og uploade filen til C:-drevet på din virtuelle maskine

  5. installer på din virtuelle maskine MS SQL server, Express-udgave, som er gratis, sammen med SQL Server Management Studio (jeg har downloadet 2014-versionen)

  6. opret ny database og vælg Opgaver...> Gendan> Database..., vælg den fil du uploadede til din virtuelle maskine, vælg Overskriv den eksisterende database.

  7. opret nyt login til din MS SQL server (højreklik på logins), vælg ønsket login og adgangskode, tildel en sysadmin rolle, bare for at gøre tingene nemmere, da dette er en engangs migreringsproces

  8. Installer nyeste MySQL Workbench på din lokale Host Linux-maskine, jeg antager, at MySQL-databasen allerede kører lokalt, hvis ikke, installer den

  9. fordi du er på Linux, skal du bruge et ekstra trin for at installere FreeTDS ODBC-driver på dit system, hvis dette link, hvordan man installerer FreeTDS driver på Linux går død, søg efter Database Migration Wizard / Microsoft SQL Server-migrering i MySQL Workbench-manualen

  10. opsæt virtuel maskine, så den er tilgængelig fra dit Linux-værtssystem, det har jeg gjort ved at vælge Vedhæftet til:Brokoblet adapter og vælge wlan0 i indstillingerne for den virtuelle maskine

  11. start den virtuelle maskine, og vælg IP-område fra det samme netværk, som din adapter bruger

  12. på din virtuelle maskine tilføj en firewal-regel for MS SQL-serveren eller slå firewall fra midlertidigt

Fra nu af bliver alt gjort på din lokale Linux-maskine med virtuel maskine, der kører

  1. start MySQL Workbench' Database Migration, vælg MS SQL som kildemaskine, indtast den korrekte IP-adresse, som du konfigurerede i din virtuelle maskine tidligere

  2. som en måldatabase, brug dine lokale MySQL-databaseindstillinger og legitimationsoplysninger

  3. i trinnet Indstillinger for måloprettelse, vælg kun Opret en SQL-scriptfil, og vælg Behold skemaer, hvis de allerede afsluttes.

  4. gennemgå de næste trin, indtil du når Data Transfer Setup. Der skal du vælge Online kopi af tabel... men tryk ikke på Næste

  5. rediger scriptet gemt i trin 15.:

fjern:

CREATE SCHEMA IF NOT EXISTS `Test` ;

tilføje:

CREATE DATABASE `Test` DEFAULT CHARACTER SET utf16 COLLATE utf16_czech_ci;

ændre alle oprette tabeldefinitioner ved at tilføje ønsket tegnsæt og sortering til tabeldefinitionen:

CREATE TABLE IF NOT EXISTS `TestTable` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) COLLATE utf16_czech_ci DEFAULT NULL,
  PRIMARY KEY (`id`)
) DEFAULT CHARSET=utf16 COLLATE=utf16_czech_ci;
  1. kør dette opdaterede script i din MySQL-database

  2. gå til næste trin i MySQL Workbench og data skal importeres korrekt

Der kan være nogle trin, der ikke er eksplicit angivet, lad mig det vide i kommentarerne, hvis du har brug for nogle afklaringer




  1. PDO kan ikke forbinde ekstern mysql-server

  2. Hvordan kan jeg fremskynde rækkenummer i Oracle?

  3. Primære nøgler i SQL Server

  4. plsql-procedure til at sammenligne to tabeller, hvor strukturen af ​​tabellen ikke er kendt