Diff de Schema de Banco de Dados

Compara dois schemas e gera um rascunho de migracao

Suporta SQL DDL e resumos JSON/YAML, destacando tabelas, colunas, indices e chaves estrangeiras.

Exemplos de resultados

2 Exemplos

Comparar SQL DDL e gerar rascunho de migracao PostgreSQL

Mostra a adicao de uma coluna obrigatoria e indice e gera o SQL correspondente.

{
  "summary": {
    "tablesAdded": 0,
    "tablesRemoved": 0,
    "columnsAdded": 1,
    "columnsRemoved": 0,
    "columnsChanged": 0,
    "indexesChanged": 1,
    "foreignKeysChanged": 0,
    "totalChanges": 2
  },
  "migrationSQL": "ALTER TABLE users ADD COLUMN email TEXT NOT NULL;\nCREATE INDEX idx_users_email ON users (email);"
}
Ver parâmetros de entrada
{ "sourceSchema": "CREATE TABLE users (\n id INT PRIMARY KEY,\n name TEXT\n);", "targetSchema": "CREATE TABLE users (\n id INT PRIMARY KEY,\n name TEXT,\n email TEXT NOT NULL\n);\nCREATE INDEX idx_users_email ON users (email);", "schemaFormat": "sql", "dialect": "postgresql" }

Comparar schemas JSON com aviso de SQLite

Compara resumos JSON em que uma tabela e uma coluna foram removidas, incluindo a observacao de rebuild no SQLite.

{
  "summary": {
    "tablesRemoved": 1,
    "columnsRemoved": 1
  },
  "migrationSQL": "DROP TABLE audit_logs;\n-- SQLite requires table rebuild to drop column users.email"
}
Ver parâmetros de entrada
{ "sourceSchema": "{\n \"tables\": {\n \"users\": {\n \"columns\": {\n \"id\": {\n \"type\": \"INTEGER\",\n \"primaryKey\": true,\n \"nullable\": false\n },\n \"email\": {\n \"type\": \"TEXT\",\n \"nullable\": false\n }\n }\n },\n \"audit_logs\": {\n \"columns\": {\n \"id\": {\n \"type\": \"INTEGER\",\n \"primaryKey\": true,\n \"nullable\": false\n }\n }\n }\n }\n}", "targetSchema": "{\n \"tables\": {\n \"users\": {\n \"columns\": {\n \"id\": {\n \"type\": \"INTEGER\",\n \"primaryKey\": true,\n \"nullable\": false\n }\n }\n }\n }\n}", "schemaFormat": "json", "dialect": "sqlite" }

Fatos principais

Categoria
Desenvolvimento e Web
Tipos de entrada
textarea, select
Tipo de saída
json
Cobertura de amostras
4
API disponível
Yes

Visão geral

O Diff de Schema de Banco de Dados compara dois schemas e gera automaticamente um rascunho de migração SQL. Compatível com SQL DDL e resumos em JSON ou YAML, a ferramenta analisa as diferenças entre a origem e o destino, destacando alterações em tabelas, colunas, índices e chaves estrangeiras para dialetos como PostgreSQL, MySQL e SQLite.

Quando usar

  • Quando precisar gerar scripts de migração SQL para atualizar um banco de dados de produção com base em um novo modelo de desenvolvimento.
  • Para revisar alterações de schema propostas em pull requests, comparando o estado atual com o novo DDL.
  • Ao migrar definições de banco de dados de formatos JSON/YAML para instruções SQL nativas em diferentes dialetos.

Como funciona

  • Cole o schema atual no campo 'Schema de origem' e o novo schema no campo 'Schema de destino'.
  • Selecione o formato do schema (SQL DDL ou JSON/YAML) e o dialeto do banco de dados (MySQL, PostgreSQL ou SQLite), ou deixe em detecção automática.
  • A ferramenta processa as entradas e identifica tabelas, colunas, índices e chaves estrangeiras adicionadas, removidas ou alteradas.
  • O resultado é retornado em JSON, contendo um resumo das modificações e o código SQL do rascunho de migração.

Casos de uso

Geração rápida de scripts ALTER TABLE e CREATE INDEX para atualizações de banco de dados PostgreSQL.
Auditoria de mudanças estruturais em bancos de dados legados comparando dumps DDL antigos e novos.
Conversão de alterações de modelagem feitas em JSON para comandos de migração compatíveis com MySQL ou SQLite.

Exemplos

1. Geração de migração PostgreSQL a partir de DDL

Desenvolvedor Backend
Contexto
Um desenvolvedor adicionou um campo de e-mail obrigatório e um índice à tabela de usuários no ambiente de desenvolvimento.
Problema
Criar o script de migração SQL exato para aplicar essas mudanças no banco de produção sem escrever os comandos manualmente.
Como usar
Insira o DDL antigo em 'Schema de origem' e o novo DDL com a coluna e o índice em 'Schema de destino'. Defina o formato como 'SQL DDL' e o dialeto como 'PostgreSQL'.
Configuração de exemplo
{"schemaFormat": "sql", "dialect": "postgresql"}
Resultado
A ferramenta retorna um JSON indicando 1 coluna e 1 índice adicionados, junto com o script ALTER TABLE e o comando CREATE INDEX correspondentes.

2. Comparação de schemas JSON para SQLite

Engenheiro de Dados
Contexto
A equipe documenta a estrutura do banco em arquivos JSON. Uma tabela de auditoria e uma coluna de e-mail foram removidas na nova versão do projeto.
Problema
Identificar as remoções e gerar o SQL de atualização para um banco SQLite, lidando com as limitações específicas do dialeto.
Como usar
Cole o JSON antigo e o novo nos respectivos campos de origem e destino, selecionando 'JSON ou YAML' como formato e 'SQLite' como dialeto.
Configuração de exemplo
{"schemaFormat": "json", "dialect": "sqlite"}
Resultado
O resumo aponta a remoção de 1 tabela e 1 coluna, gerando o comando DROP TABLE e um comentário alertando que o SQLite exige a recriação da tabela para remover a coluna.

Testar com amostras

sql

Hubs relacionados

FAQ

Quais formatos de schema são suportados?

A ferramenta suporta instruções SQL DDL diretas e resumos de schema estruturados em JSON ou YAML.

Quais bancos de dados a ferramenta reconhece?

Suportamos os dialetos MySQL, PostgreSQL e SQLite. Você também pode usar a opção de detecção automática.

A ferramenta gera o script de migração completo?

Ela gera um rascunho de migração SQL baseado nas diferenças encontradas. É recomendado revisar o código gerado antes de executá-lo em produção.

Como o SQLite lida com a remoção de colunas?

Como o SQLite possui limitações para remover colunas diretamente via DROP COLUMN, a ferramenta adiciona um aviso no SQL gerado indicando a necessidade de recriar a tabela.

O que o resumo de alterações inclui?

O JSON de saída inclui contagens exatas de tabelas, colunas, índices e chaves estrangeiras que foram adicionadas, removidas ou modificadas.

Documentação da API

Ponto final da solicitação

POST /pt/api/tools/database-schema-diff

Parâmetros da solicitação

Nome do parâmetro Tipo Requerido Descrição
sourceSchema textarea Sim -
targetSchema textarea Sim -
schemaFormat select Não -
dialect select Não -

Formato de resposta

{
  "key": {...},
  "metadata": {
    "key": "value"
  },
  "error": "Error message (optional)",
  "message": "Notification message (optional)"
}
Dados JSON: Dados JSON

Documentação de MCP

Adicione este ferramenta à sua configuração de servidor MCP:

{
  "mcpServers": {
    "elysiatools-database-schema-diff": {
      "name": "database-schema-diff",
      "description": "Compara dois schemas e gera um rascunho de migracao",
      "baseUrl": "https://elysiatools.com/mcp/sse?toolId=database-schema-diff",
      "command": "",
      "args": [],
      "env": {},
      "isActive": true,
      "type": "sse"
    }
  }
}

Você pode encadear várias ferramentas, ex: `https://elysiatools.com/mcp/sse?toolId=png-to-webp,jpg-to-webp,gif-to-webp`, máx 20 ferramentas.

Se você encontrar algum problema, por favor, entre em contato conosco em [email protected]