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

Come migrare il database MS SQL in esecuzione su una macchina remota nel mio database MySQL locale in esecuzione su Linux, preservando la codifica

Utilizzando MySQL Workbench, ho provato queste combinazioni, nessuna ha funzionato:

MS SQL remoto> driver ODBC nativo MySQL remoto

MS SQL remoto> driver MySQL ODBC DataSource remoto

MS SQL remoto> driver ODBC MySQL freeTDS remoto (con o senza UTF-8)

MS SQL virtuale> driver ODBC nativo MySQL virtuale

MS SQL virtuale> driver MySQL ODBC DataSource virtuale

MS SQL virtuale> driver ODBC freeTDS MySQL virtuale (con o senza UTF-8)

In entrambi i casi, il processo di migrazione si è bloccato (workbench non rispondente) o i caratteri non sono stati trasferiti correttamente.

Il tempo totale di tentativi ed errori è stato di circa 12 ore.

Qui sto condividendo con te un modo in cui sono stato in grado di migrare con successo l'intero database MS SQL sul mio server MySQL locale in esecuzione sulla mia macchina di sviluppo.

Mentre mi connettevo alla macchina remota W10 tramite Connessione desktop remoto (RDC) dalla mia macchina VirtualBox, all'inizio volevo rimuovere questo passaggio aggiuntivo per semplificare le cose.

  1. se non lo hai ancora, scarica e installa macchina Virtual Box gratuita che Microsoft offre e avvialo

  2. da questa macchina virtuale avviare RDC e prima di connettersi, aggiungere il disco locale sulla macchina virtuale per essere disponibile sulla macchina remota

  3. su macchina remota avviare SQL Server Management Studio e creare un backup del database (fare clic con il tasto destro del mouse sul database desiderato, Attività> Backup..., salvare il file di backup sul disco)

  4. copia questo file di backup sull'unità sulla macchina virtuale accedendo a Reti e caricando il file su C:unità sulla macchina virtuale

  5. installa sulla tua macchina virtuale MS SQL Server, Express Edition che è gratuita, insieme a SQL Server Management Studio (ho scaricato la versione 2014)

  6. crea un nuovo database e seleziona Attività...> Ripristina> Database..., seleziona il file che hai caricato sulla tua macchina virtuale, seleziona Sovrascrivi il database esistente..

  7. crea un nuovo accesso per il tuo server MS SQL (fai clic con il pulsante destro del mouse su Login), seleziona il login e la password desiderati, assegna un ruolo di amministratore di sistema, solo per semplificare le cose, poiché si tratta di un processo di migrazione una tantum

  8. sul tuo computer Host Linux locale installa l'ultimo MySQL Workbench, presumo che il database MySQL sia già in esecuzione localmente, in caso contrario, installalo

  9. poiché sei su Linux, avrai bisogno di un passaggio aggiuntivo per installare il driver ODBC di FreeTDS sul tuo sistema, se questo link, come installare il driver FreeTDS su Linux non funziona più, cerca Migrazione guidata database / Migrazione Microsoft SQL Server nel manuale MySQL Workbench

  10. configurare la macchina virtuale in modo che sia accessibile dal tuo sistema host Linux, l'ho fatto selezionando Attached to:Bridged adapter e selezionando wlan0 nelle impostazioni della macchina virtuale

  11. avviare la macchina virtuale e selezionare l'intervallo IP dalla stessa rete utilizzata dall'adattatore

  12. sulla tua macchina virtuale aggiungi una regola firewall per il server MS SQL o disattiva temporaneamente il firewall

D'ora in poi, tutto verrà eseguito sulla tua macchina Linux locale con la macchina virtuale in esecuzione

  1. avvia la migrazione del database di MySQL Workbench, seleziona MS SQL come macchina di origine, inserisci l'indirizzo IP corretto che hai configurato in precedenza nella tua macchina virtuale

  2. come database di destinazione, utilizza le impostazioni e le credenziali del database MySQL locale

  3. nel passaggio Opzioni di creazione destinazione seleziona solo Crea un file di script SQL e seleziona Mantieni schemi se sono già chiusi.

  4. procedere con i passaggi successivi fino a raggiungere Configurazione trasferimento dati. Lì seleziona Copia online della tabella... ma non premere Avanti

  5. modifica lo script salvato nel passaggio 15.:

rimuovi:

CREATE SCHEMA IF NOT EXISTS `Test` ;

aggiungi:

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

modificare tutte le definizioni della tabella di creazione aggiungendo il set di caratteri e le regole di confronto desiderati alla definizione della tabella:

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. esegui questo script aggiornato nel tuo database MySQL

  2. vai al passaggio successivo in MySQL Workbench e i dati dovrebbero essere importati correttamente

Potrebbero esserci alcuni passaggi non esplicitamente indicati, per favore fatemelo sapere nei commenti se avete bisogno di chiarimenti