sql >> Database >  >> RDS >> Mysql

Hoe een MS SQL-database die op een externe machine draait, migreren naar mijn lokale MySQL-database die op linux draait, met behoud van codering

Met MySQL Workbench heb ik deze combinaties geprobeerd, geen van alle werkte:

externe MS SQL> externe MySQL native ODBC-driver

externe MS SQL> externe MySQL ODBC DataSource-stuurprogramma

remote MS SQL> remote MySQL freeTDS ODBC driver (met of zonder UTF-8)

virtuele MS SQL> virtuele MySQL native ODBC-driver

virtueel MS SQL> virtueel MySQL ODBC DataSource-stuurprogramma

virtueel MS SQL> virtueel MySQL freeTDS ODBC-stuurprogramma (met of zonder UTF-8)

In beide gevallen liep het migratieproces vast (werkbank reageert niet) of werden tekens niet correct overgedragen.

De totale tijd van vallen en opstaan ​​was ongeveer 12 uur.

Hier deel ik een manier met je om met succes de hele MS SQL-database te migreren naar mijn lokale MySQL-server die op mijn ontwikkelmachine draait.

Omdat ik verbinding maakte met de externe W10-machine via Remote Desktop Connection (RDC) vanaf mijn VirtualBox-machine, wilde ik eerst deze extra stap verwijderen om het gemakkelijker te maken.

  1. als je dat nog niet hebt, download en installeer dan gratis Virtual Box-machine die Microsoft biedt en start het

  2. start vanaf deze virtuele machine RDC en voeg voordat u verbinding maakt een lokale schijf toe aan de virtuele machine om beschikbaar te zijn op de externe machine

  3. start op de externe machine SQL Server Management Studio en maak een back-up van de database (Klik met de rechtermuisknop op de gewenste database, Taken> Back-up..., sla back-upbestand op schijf op)

  4. kopieer dit back-upbestand naar uw schijf op de virtuele machine door naar Netwerken te gaan en het bestand te uploaden naar C:schijf op uw virtuele machine

  5. installeer op uw virtuele machine MS SQL-server, Express-editie die gratis is, samen met SQL Server Management Studio (ik heb de 2014-versie gedownload)

  6. maak een nieuwe database aan en selecteer Taken...> Herstellen> Database..., selecteer het bestand dat u naar uw virtuele machine heeft geüpload, selecteer De bestaande database overschrijven..

  7. maak een nieuwe login voor uw MS SQL-server (klik met de rechtermuisknop op Logins), selecteer de gewenste login en wachtwoord, wijs een sysadmin-rol toe, gewoon om het u gemakkelijker te maken, aangezien dit een eenmalig migratieproces is

  8. installeer op uw lokale Host Linux-machine de nieuwste MySQL Workbench, ik neem aan dat de MySQL-database al lokaal wordt uitgevoerd, zo niet, installeer deze dan

  9. omdat je Linux gebruikt, heb je een extra stap nodig om het FreeTDS ODBC-stuurprogramma op je systeem te installeren, als dit link, hoe FreeTDS-stuurprogramma op Linux te installeren gaat dood, zoek naar Database Migration Wizard / Microsoft SQL Server-migratie in MySQL Workbench-handleiding

  10. virtuele machine instellen om toegankelijk te zijn vanaf uw Host linux-systeem, ik heb dat gedaan door Attached to:Bridged adapter te selecteren en wlan0 te kiezen in de instellingen van de virtuele machine

  11. start virtuele machine en selecteer IP-bereik van hetzelfde netwerk als uw adapter gebruikt

  12. voeg op uw virtuele machine een firewallregel toe voor MS SQL-server of schakel de firewall tijdelijk uit

Vanaf nu wordt alles gedaan op uw lokale Linux-machine terwijl de virtuele machine draait

  1. start MySQL Workbench' Database Migration, selecteer MS SQL als bronmachine, voer het juiste IP-adres in dat u eerder in uw virtuele machine hebt ingesteld

  2. gebruik als doeldatabase uw lokale MySQL-database-instellingen en referenties

  3. in de stap Opties voor het maken van doelen selecteert u alleen Een SQL-scriptbestand maken en selecteert u Schema's behouden als ze al worden afgesloten.

  4. doorloop de volgende stappen totdat u Data Transfer Setup bereikt. Selecteer daar Online kopie van tafel... maar druk niet op Volgende

  5. bewerk het script dat is opgeslagen in stap 15.:

verwijderen:

CREATE SCHEMA IF NOT EXISTS `Test` ;

toevoegen:

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

wijzig alle tabeldefinities van het maken door de gewenste tekenset en sortering aan de tabeldefinitie toe te voegen:

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. voer dit bijgewerkte script uit in uw MySQL-database

  2. ga naar de volgende stap in MySQL Workbench en de gegevens zouden correct moeten worden geïmporteerd

Er kunnen enkele stappen zijn die niet expliciet vermeld zijn, laat het me weten in opmerkingen als je verduidelijking nodig hebt




  1. Tuple naar lijst - Python / PostgreSQL-retourtype van SETOF-record

  2. Stel de waarde in op NULL in MySQL

  3. Het gebruik van het entiteitsraamwerk met een MySQL-database en de modelontwerper haalt geen opgeslagen proc-parameters op

  4. Verschillende waarden selecteren uit meerdere kolommen van een tabel met hun aantal