Migração de dados de SQL Server para MariaDB

Migrate · · 4 min de leitura

Vai levar tabelas do SQL Server para o MariaDB? O dbSlice copia os dados por um app Windows ou pela linha de comando, mantém o MariaDB sincronizado enquanto o sistema antigo ainda está no ar e compara os dois lados chave a chave antes da troca.

Migrar de SQL Server para MariaDB: o que muda no destino

Se a tabela não existe no MariaDB, o dbSlice para e mostra um CREATE TABLE traduzido para o MariaDB, para o seu DBA revisar e rodar. Por padrão, ele não cria nada nos seus bancos. Estes são os detalhes do MariaDB para olhar:

  • bit vira TINYINT(1). O MariaDB não tem um tipo booleano separado; BOOLEAN é apelido de TINYINT(1), então as flags chegam como 1 e 0.
  • As datas perdem o 7º dígito. O datetime2 do SQL Server guarda precisão de 100 nanossegundos; o DATETIME(6) do MariaDB guarda microssegundos. O datetimeoffset também é sugerido como DATETIME(6), sem o offset: guarde em UTC, ou acrescente uma coluna para o fuso se a aplicação precisar.
  • uniqueidentifier vira CHAR(36), o GUID como texto. No MariaDB 10.7 ou posterior, você pode declarar o tipo nativo UUID no CREATE TABLE.
  • nvarchar vira VARCHAR ou LONGTEXT. Use o charset utf8mb4 para caber qualquer caractere Unicode. O MariaDB limita uma linha a 65.535 bytes; então uma tabela com muitas colunas VARCHAR largas pode precisar de algumas delas como TEXT.
  • rowversion vira LONGBLOB. É um contador de mudanças do SQL Server, não uma data: deixe fora da cópia, a menos que a aplicação o leia.
  • Os ids IDENTITY são mantidos como valores AUTO_INCREMENT. O MariaDB aceita os ids originais e avança o contador para depois do maior, então as linhas novas continuam dali.
  • O Upsert precisa de uma chave no MariaDB. Ele roda como INSERT … ON DUPLICATE KEY UPDATE; então a coluna-chave precisa ser a chave primária ou ter um índice único na tabela do MariaDB.
  • A carga em massa usa LOAD DATA LOCAL INFILE quando a conexão permite (AllowLoadLocalInfile=true e local_infile no servidor). O dbSlice não liga isso por conta própria; sem isso, as linhas entram em INSERTs em lote.
Aba Synchronize do dbSlice

Como o dbSlice controla a carga

  • Lê o SQL Server em lotes pequenos, para o banco em uso continuar atendendo os usuários.
  • Casa as linhas por uma chave que você escolhe. Modos: Initial load na primeira vez, depois Upsert, Insert new, Update only ou incremental por coluna (updated_at ou o id IDENTITY), que lê só as linhas acima do último valor visto.
  • Confere antes de gravar: o Record Diff compara as chaves dos dois lados, e as conferências na tela rodam antes de qualquer gravação.
  • Prova o resultado: o Compare lê as duas tabelas chave a chave e salva a lista completa de chaves divergentes num arquivo.
  • Mascara no caminho se a cópia no MariaDB for para desenvolvimento ou teste: as colunas sensíveis são ofuscadas durante a cópia, com chaves e chaves estrangeiras preservadas.
  • Exportar em vez de carregar: quando você só precisa de um arquivo, o mesmo app exporta uma tabela do SQL Server para CSV, JSON, XML ou HTML.

Passo a passo: converter uma tabela de SQL Server para MariaDB

  1. Conecte no SQL Server e no MariaDB.
  2. Escolha a tabela de origem (ou um SELECT) e a tabela de destino.
  3. Escolha a coluna-chave.
  4. Escolha o modo: Initial load, depois Upsert ou Insert new.
  5. Rode o Record Diff e depois a cópia, ou salve como job para a CLI e o Agendador de Tarefas do Windows. O Replicador copia uma lista de tabelas numa execução, as pais antes das filhas.

Mover dados entre SQL Server e MariaDB, com qualquer um dos dois como origem

O mesmo app move dados no outro sentido: veja MariaDB para SQL Server. Ele também cobre SQL Server para PostgreSQL e MySQL, Oracle, Firebird, SQLite e InterSystems IRIS. Vindo do PostgreSQL? Veja PostgreSQL para MySQL e MariaDB.

Perguntas frequentes

O dbSlice converte stored procedures, triggers ou views?

Não. Ele move dados; o código T-SQL precisa ser reescrito para o MariaDB.

Preciso de CDC ou do SQL Server Agent?

Não. O dbSlice lê as tabelas com consultas comuns e roda como job pela própria CLI ou pelo Agendador de Tarefas.

As execuções incrementais copiam as exclusões?

Não. As execuções incrementais leem as linhas novas e alteradas. Rode o Compare ou uma recarga antes da troca para pegar as linhas excluídas.

Existe versão gratuita?

Sim, na Microsoft Store: ela conecta, navega, compara e exporta para CSV. Gravar num destino exige uma licença Desktop ou Server.

Ainda não usa o dbSlice?
Experimente a versão gratuita da Microsoft Store: ela conecta, navega pelos dados, compara estruturas e exporta para CSV.

Experimente grátis Veja as demonstrações

Em produção há mais de 6 anos · Garantia de 14 dias · Roda na sua máquina