SQL Schema Diff e rascunho de migração

Cole os esquemas anterior e novo e escolha o dialeto. Revise o SQL gerado: remoções de tabelas e colunas ficam comentadas e as demais instruções precisam de conferência antes de rodar.

Funciona localmente no seu navegador
Esta ferramenta processa todos os dados localmente no seu navegador.
Snapshots do schemaCole o SQL CREATE TABLE anterior e o novo.
Rascunho de migraçãoAções destrutivas ficam comentadas para revisão.
Execute a ferramenta para exibir aqui o resultado processado localmente.

Como comparar dois snapshots de esquema e preparar uma migração

Cole o esquema antigo em Before e o novo em After, escolha PostgreSQL ou MySQL e clique em Gerar migração. A ferramenta lê as instruções CREATE TABLE e escreve as instruções ALTER e CREATE que levam um snapshot ao outro.

Tudo roda no navegador; nenhum texto do esquema sai da página. O resultado é um rascunho para revisão: as instruções que podem destruir dados ficam como comentários para que nada seja executado por acidente.

  1. Cole o esquema atual em Before ou use um dump apenas de esquema (pg_dump --schema-only ou mysqldump --no-data).
  2. Cole o esquema desejado em After ou rode esse dump de novo depois da mudança que você quer aplicar.
  3. Escolha o dialeto do servidor que vai executar a migração e clique em Gerar migração.
  4. Leia primeiro a lista de achados: adições, mudanças e itens destrutivos aparecem separados, e as instruções destrutivas ficam comentadas no rascunho.
  5. Copie ou baixe schema-migration.sql, rode em uma cópia de staging dentro de uma transação quando o motor permitir e só depois aplique em produção.

O que o rascunho cobre, o que fica comentado e o que é ignorado

O que o rascunho detecta

Ele compara tabelas e colunas: tabelas e colunas adicionadas ou removidas, mudanças de tipo, mudanças de NOT NULL e mudanças de valor padrão. Chaves primárias adicionadas, removidas ou com outro conjunto de colunas também são reportadas, incluindo definições no nível da tabela PRIMARY KEY (a, b).

As chaves estrangeiras são comparadas tanto quando estão na coluna (REFERENCES users(id)) quanto como restrição de tabela (FOREIGN KEY (a, b) REFERENCES parent (x, y)). Uma chave nova vira ADD CONSTRAINT e uma removida fica comentada com o nome de restrição que a ferramenta usaria.

O que fica comentado e o que é ignorado

DROP TABLE, DROP COLUMN e chaves primárias ou estrangeiras removidas são impressos como comentários sob um aviso DESTRUCTIVE, porque descartam dados ou restrições que rodar a ferramenta de novo não recupera. Esta página não executa o rascunho: você decide quais linhas ativar.

Apenas instruções CREATE TABLE são lidas. Definições UNIQUE, CHECK e INDEX não são comparadas, e mudanças de dados, renomeações, views, sequences, triggers, permissões e opções de tabela específicas do motor ficam fora do escopo. Quando essas definições são ignoradas, o rascunho avisa em vez de mostrar um diff limpo.

Executar o rascunho com segurança

Teste antes em uma cópia de staging e gere o esquema com um dump apenas de esquema para que os dados não escondam o diff. O PostgreSQL executa quase todo DDL dentro de uma transação, então BEGIN e ROLLBACK podem desfazer uma migração errada; o MySQL confirma DDL de forma implícita, então um erro precisa ser corrigido para frente.

Adicionar NOT NULL ou uma chave primária valida ou reescreve uma tabela existente e pode manter um bloqueio enquanto isso. Verifique quanto tempo leva com o tamanho real da tabela (o PostgreSQL valida NOT NULL com uma varredura completa, o MySQL pode reconstruir a tabela) e agende a mudança em vez de rodar em horário de pico.

Ferramentas recentes: