Ir para o conteúdo

Comparação de esquema SQL

Compare dois esquemas CREATE TABLE e gere a migração ALTER TABLE entre eles.

Entrada
Esquema de destino (CREATE TABLE)
Saída

Comparação de esquema SQL

Cole o seu esquema atual à esquerda e o esquema que pretende alcançar à direita, e esta ferramenta escreve a migração entre eles. Compara declarações CREATE TABLE tabela a tabela e coluna a coluna, depois gera as declarações CREATE TABLE, DROP TABLE, ADD COLUMN, DROP COLUMN e ALTER COLUMN necessárias para transformar o primeiro esquema no segundo — útil para rever uma mudança de esquema, escrever um ficheiro de migração à mão ou verificar o que uma ferramenta de geração de esquema realmente fez.

Escolha uma base de dados na opção Base de dados — PostgreSQL, MySQL ou SQLite — pois cada uma escreve alterações de colunas de forma diferente: PostgreSQL usa ALTER COLUMN ... TYPE e SET/DROP NOT NULL, MySQL combina tipo e nulabilidade numa única declaração MODIFY COLUMN, e SQLite não tem ALTER COLUMN, portanto esses casos são anotados como necessitando uma reconstruir tabela. Inclua alterações de índices para comparar também declarações CREATE INDEX, encapsule o resultado numa transação e ative a opção de reverter para uma segunda migração inversa anexada abaixo da primeira.

Eliminar uma tabela ou coluna, estreitar um tipo ou adicionar NOT NULL pode descartar dados ou falhar face a linhas que não se encaixam na nova restrição. Com "Avisar sobre perda de dados" ativa, cada um desses passos é marcado no resultado para que seja fácil detetar antes de executar qualquer coisa numa base de dados real. As tabelas que se referem entre si através de uma chave estrangeira são criadas e eliminadas por ordem de dependência, por isso o script não falha numa tabela que precisava primeiro.

Tudo corre localmente no seu navegador — os seus esquemas nunca são enviados para lado nenhum, por isso é seguro colar definições de tabelas reais de uma base de dados privada. Copie a migração, transfira-a como ficheiro .txt ou envie o resultado de volta para a entrada para continuar a refiná-lo.

FAQ

Quais dialetos SQL são suportados?
PostgreSQL, MySQL e SQLite. Escolha um na opção Base de dados — cada um escreve a sintaxe de ALTER COLUMN, índices e aspa de forma diferente.
Consegue detetar alterações que possam perder dados?
Sim. Tabelas eliminadas, colunas eliminadas, colunas estreitadas para um tipo mais pequeno e colunas tornadas NOT NULL são todas assinaladas com um comentário de aviso quando "Avisar sobre perda de dados" está ativa.
Consegue lidar com dependências de chaves estrangeiras?
Sim. Quando uma tabela referencia outra, as declarações CREATE TABLE são ordenadas para que a tabela referenciada venha em primeiro lugar, e as declarações DROP TABLE são ordenadas para que as tabelas que fazem referência sejam eliminadas antes das tabelas de que dependem.
Que sintaxe SQL consegue ler?
Declarações CREATE TABLE padrão com colunas digitadas, NOT NULL, PRIMARY KEY e REFERENCES, mais declarações CREATE INDEX autónomas. Declarações que não reconhece (inserções, outro DDL) são ignoradas em vez de rejeitadas.
Os meus esquemas são carregados em qualquer lugar?
Não. A comparação de esquemas e a geração da migração executam inteiramente no seu navegador — nada do que cola aqui é enviado para um servidor.