Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como migrar o banco de dados MS SQL em execução na máquina remota para meu banco de dados MySQL local em execução no linux, preservando a codificação


Usando o MySQL Workbench, tentei essas combinações, nenhuma delas funcionou:

MS SQL remoto> driver ODBC nativo do MySQL remoto

remoto MS SQL> driver remoto MySQL ODBC DataSource

MS SQL remoto> driver ODBC freeTDS MySQL remoto (com ou sem UTF-8)

virtual MS SQL> driver ODBC nativo do MySQL virtual

virtual MS SQL> driver virtual MySQL ODBC DataSource

virtual MS SQL> driver virtual MySQL freeTDS ODBC (com ou sem UTF-8)

Em qualquer um desses casos, o processo de migração ficou travado (Workbench sem resposta) ou os caracteres não foram transferidos corretamente.

O tempo total de tentativa e erro foi de cerca de 12 horas.

Aqui estou compartilhando com você uma maneira de como consegui migrar com sucesso todo o banco de dados MS SQL para o meu servidor MySQL local em execução na minha máquina de desenvolvimento.

Como eu estava me conectando à máquina W10 remota via Remote Desktop Connection (RDC) da minha máquina VirtualBox, a princípio eu queria remover essa etapa extra para facilitar as coisas.

  1. se ainda não tiver, baixe e instale a máquina Virtual Box gratuita que a Microsoft oferece e iniciá-lo

  2. a partir desta máquina virtual inicie o RDC e antes de conectar, adicione o disco local na máquina virtual para estar disponível na máquina remota

  3. na máquina remota inicie o SQL Server Management Studio e crie um backup do banco de dados (clique com o botão direito do mouse no banco de dados desejado, Tarefas> Backup..., salve o arquivo de backup no disco)

  4. copie este arquivo de backup para sua unidade na máquina virtual navegando até Redes e fazendo upload do arquivo para a unidade C:em sua máquina virtual

  5. instale na sua máquina virtual MS SQL server, edição Express que é gratuita, junto com o SQL Server Management Studio (descarreguei a versão 2014)

  6. crie um novo banco de dados e selecione Tarefas...> Restaurar> Banco de dados..., selecione o arquivo que você carregou para sua máquina virtual, selecione Substituir o banco de dados existente..

  7. crie um novo login para o seu servidor MS SQL (clique com o botão direito do mouse em Logins), selecione o login e a senha desejados, atribua uma função sysadmin, apenas para facilitar as coisas, pois este é um processo de migração único

  8. em sua máquina local Host Linux instale o MySQL Workbench mais recente, suponho que o banco de dados MySQL já esteja sendo executado localmente, caso contrário, instale-o

  9. como você está no Linux, precisará de uma etapa extra para instalar o driver ODBC do FreeTDS em seu sistema, se isso link, como instalar o driver FreeTDS no Linux for morto, procure por migração do Assistente de migração de banco de dados / Microsoft SQL Server no manual do MySQL Workbench

  10. configurar a máquina virtual para ser acessível a partir do seu sistema Host linux, eu fiz isso selecionando Attached to:Bridged adapter e escolhendo wlan0 nas configurações da máquina virtual

  11. inicie a máquina virtual e selecione o intervalo de IP da mesma rede que o adaptador usa

  12. em sua máquina virtual, adicione uma regra de firewall para o servidor MS SQL ou desative o firewall temporariamente

A partir de agora, tudo é feito em sua máquina Linux local com a máquina virtual em execução

  1. inicie a migração de banco de dados do MySQL Workbench, selecione MS SQL como uma máquina de origem, insira o endereço IP correto que você configurou em sua máquina virtual anteriormente

  2. como um banco de dados de destino, use as configurações e credenciais do banco de dados MySQL local

  3. na etapa Opções de criação de destino, selecione apenas Criar um arquivo de script SQL e selecione Manter esquemas se eles já existirem.

  4. siga as próximas etapas até chegar à configuração da transferência de dados. Lá selecione Cópia online da tabela... mas não pressione Avançar

  5. edite o script salvo na etapa 15.:

remover:
CREATE SCHEMA IF NOT EXISTS `Test` ;

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

altere todas as definições de criação de tabela adicionando o conjunto de caracteres e o agrupamento desejados à definição da tabela:
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. execute este script atualizado em seu banco de dados MySQL

  2. vá para a próxima etapa no MySQL Workbench e os dados devem ser importados corretamente

Pode haver alguns passos não declarados explicitamente, por favor, deixe-me saber nos comentários se você precisar de alguns esclarecimentos