Migrar um banco
Migrar para outro banco… copia um schema inteiro, estrutura e dados, para outro banco. Abra pelo menu … do schema na barra lateral.
- De: qualquer conexão SQL.
- Para: uma conexão PostgreSQL, MySQL, SQLite ou SQL Server que aceita escrita, ou MongoDB (veja SQL e MongoDB).
Como funciona
- Escolha a Conexão de destino. A janela conta tabelas e chaves estrangeiras e lista os avisos.
- Pré-visualizar DDL mostra todos os comandos que criam a estrutura.
- Migrar cria as tabelas, copia as linhas das tabelas pai primeiro, em lotes de 1.000, e depois adiciona chaves estrangeiras e índices.
Substituir tabelas existentes no destino apaga antes as tabelas com o mesmo nome. As tabelas são criadas no schema padrão do destino.
O que é levado
Quanto sobrevive depende da origem. Origens PostgreSQL são lidas em detalhe:
- tipos, convertidos para o equivalente no destino;
NOT NULL, chaves primárias (compostas também) e constraintsUNIQUE;- chaves estrangeiras, inclusive compostas (o SQLite não aceita adicionar depois de criar a tabela, então lá elas ficam de fora, com aviso);
- índices secundários em colunas simples;
- enums: um
CREATE TYPEno PostgreSQL, umenumna coluna no MySQL, texto comCHECKno SQL Server e no SQLite; - arrays, como arrays no PostgreSQL e texto nos outros;
- colunas auto-incremento e identity, com as sequences acertadas depois da cópia;
- defaults portáveis (literais, booleanos,
now(),gen_random_uuid()); os outros ficam de fora, com aviso.
Colunas geradas viram colunas normais. Views, funções e triggers aparecem em Não migrado para você portar na mão.
A partir de MySQL, SQLite, SQL Server, ClickHouse e Trino, o Lily leva colunas, tipos, se aceitam NULL, a chave primária e chaves estrangeiras de uma coluna. Defaults, auto-incremento, constraints únicas, índices e enums não são copiados, e views não são listadas.
Tipos que o Lily não sabe converter viram texto, com aviso.
Se falhar
O Lily apaga as tabelas que criou nessa execução, das filhas para as pais, e diz quantas desfez. Tabelas que o Substituir tinha apagado não voltam, e os tipos enum criados ficam.
As linhas são copiadas em lotes, não numa transação grande, e não tem confirmação extra para destinos de Produção. Evite escrever na origem enquanto roda, principalmente em tabelas sem chave primária, que são copiadas sem ordem definida.
