Formatador de SQL — 11 dialetos, minificação e destaque de sintaxe
Transforme SQL bagunçado em consultas legíveis e com indentação consistente para PostgreSQL, MySQL, T-SQL, BigQuery e mais. Roda no seu navegador.
Funciona inteiramente no seu navegador. Seu SQL nunca é enviado a um servidor, então nomes de esquema e dados nas consultas continuam privados. Ver todas as ferramentas grátis.
Encontrou um problema ou algo que poderia ser melhor? Lemos todas as mensagens e corrigimos rápido.
Este formatador de SQL grátis transforma uma consulta copiada de um log, de um ORM ou de uma migração de uma linha só em SQL legível: uma cláusula por linha, indentação consistente e palavras-chave na caixa que você escolher. Escolha o dialeto do seu banco de dados para que sintaxes como os casts :: e os corpos de função $$ do PostgreSQL, as crases do MySQL, os [colchetes] e @variáveis do T-SQL ou as cláusulas QUALIFY do BigQuery e do Snowflake sejam entendidas em vez de estragadas.
A formatação só altera espaços em branco e a caixa de palavras-chave, tipos de dados e nomes de funções. Literais de string, identificadores entre aspas e comentários ficam exatamente como foram escritos. O formatador precisa analisar o seu SQL para organizá-lo, então SQL com templates (blocos {{ }} do dbt ou Jinja) e algumas instruções específicas de fornecedores podem falhar; quando isso acontece, ele informa a linha e a coluna em que parou. Minificar faz o contrário: uma linha, comentários removidos, hints do otimizador como /*+ INDEX(...) */ mantidos.
Como usar
- Cole uma ou mais instruções SQL na caixa. Uma consulta de exemplo já vem carregada para você ver o resultado primeiro.
- Escolha o dialeto que o seu banco de dados usa. Isso importa principalmente para aspas, parâmetros e sintaxe específica do fornecedor.
- Defina a caixa das palavras-chave, a indentação e o número de linhas em branco entre as instruções. A saída é atualizada conforme você muda.
- Mude para Minificar se precisar da consulta em uma única linha, por exemplo dentro de uma configuração JSON ou de um comando de shell.
- Copie o resultado ou baixe como arquivo .sql.
Perguntas frequentes
A formatação muda o que a minha consulta SQL faz?
Não. O formatador só altera espaços em branco e a caixa das letras de palavras-chave, tipos de dados e funções, que os bancos de dados SQL tratam sem diferenciar maiúsculas e minúsculas. Valores de string, identificadores entre aspas ("Column", `col`, [col]) e comentários são copiados sem alteração, então a consulta retorna os mesmos resultados. Nomes de tabelas e colunas não mudam de caixa, com uma exceção: um nome sem aspas que também é palavra-chave no dialeto escolhido (por exemplo, um alias chamado month) segue a caixa das palavras-chave. Nomes sem aspas não diferenciam maiúsculas e minúsculas na maioria dos bancos, então isso raramente importa, mas nomes de tabelas do MySQL podem diferenciar no Linux; escolha Manter para deixar o texto exatamente como você escreveu.
Qual dialeto SQL devo escolher?
O que o seu banco de dados usa. O SQL padrão funciona para instruções SELECT, INSERT e UPDATE simples, mas não conhece os casts :: e os parâmetros $1 do PostgreSQL, os identificadores com crase e os comentários # do MySQL, os colchetes, as @variáveis e o TOP do T-SQL, os blocos PL/SQL do Oracle nem a cláusula QUALIFY do BigQuery e do Snowflake. Se a formatação falhar com um erro de análise, escolher o dialeto certo é a primeira coisa a tentar.
Por que o formatador mostra "Parse error" (erro de análise)?
Ele encontrou um token que não esperava para o dialeto escolhido. As causas comuns são dialeto errado, um parêntese ou aspa sem fechar, placeholders de template como {{ ref("orders") }} do dbt ou código procedural que o analisador não cobre. A linha de status mostra a linha e a coluna, e a caixa abaixo aponta para o caractere, o que geralmente basta para achar o problema.
As palavras-chave do SQL devem ficar em maiúsculas?
É uma convenção, não uma regra. Palavras-chave em maiúsculas (SELECT, FROM, WHERE) destacam a estrutura em relação aos nomes de tabelas e colunas e são o estilo mais comum em documentações e guias de estilo. Muitas equipes que usam dbt ou editores modernos com destaque de sintaxe preferem minúsculas. Escolha um estilo e aplique em tudo; esta ferramenta converte para qualquer um dos dois ou mantém o que você escreveu.
É seguro minificar SQL?
Para a consulta em si, sim: a minificação junta os espaços em branco e remove comentários -- e /* */, sem nunca mexer no conteúdo das strings. Hints do otimizador (/*+ ... */) e comentários de versão do MySQL (/*! ... */) são mantidos porque mudam o comportamento. O custo é a legibilidade, então minifique só para transporte (uma configuração JSON, uma variável de ambiente, uma linha de log) e mantenha a versão formatada no seu repositório.
Meu SQL é enviado para um servidor?
Não. A biblioteca de formatação é baixada para o seu navegador e roda nele. Nomes de tabelas, nomes de colunas e quaisquer dados nas suas cláusulas WHERE nunca saem da sua máquina.
Diferenças entre dialetos que quebram formatadores
• Aspas em identificadores: o SQL padrão e o PostgreSQL usam "aspas duplas", MySQL e MariaDB usam `crases`, e o SQL Server usa [colchetes]. Um formatador configurado com o dialeto errado pode ler um nome entre aspas como string ou operador.
• Parâmetros: o PostgreSQL usa $1, $2; MySQL e SQLite usam ?; o SQL Server usa @name; o Oracle usa :name. Eles são mantidos exatamente como foram escritos.
• Casts e operadores: o PostgreSQL tem value::type, os operadores JSON -> e ->> e o ILIKE. BigQuery e Snowflake têm QUALIFY para filtrar funções de janela. Spark e Hive têm LATERAL VIEW.
• Strings e corpos: corpos de função do PostgreSQL costumam ficar entre $$ ... $$ (dollar quoting), e strings com escape usam E'...'. Tudo o que fica dentro é tratado como uma única string e não é alterado.
• Comentários: -- e /* */ funcionam em todo lugar; # inicia um comentário só no MySQL e no MariaDB. No T-SQL, #name é uma tabela temporária.
Um estilo de SQL legível em cinco regras
Os guias de estilo de SQL publicados divergem em detalhes como vírgulas no início ou no fim da linha, mas a maioria concorda em algumas regras de layout, e este formatador as aplica por padrão:
• Uma cláusula principal por linha: SELECT, FROM, JOIN, WHERE, GROUP BY, HAVING, ORDER BY, LIMIT.
• Uma coluna selecionada por linha, para que os diffs mostrem exatamente qual coluna mudou.
• Condições depois de AND ou OR em linhas próprias dentro de WHERE e ON.
• Subconsultas e corpos de CTE indentados um nível a mais que o pai.
• Uma linha em branco entre as instruções de um script, para que cada instrução seja lida como uma unidade.
O que um formatador não consegue fazer é dar bons nomes. Use aliases de tabela que signifiquem algo (orders o tudo bem, t1 não) e dê às colunas calculadas um nome explícito com AS.
Ferramentas grátis relacionadas
- Formatador de JSON — Formate, minifique e valide JSON, com erros de parsing localizados por linha e coluna. No seu navegador, sem upload.
- JSON para TypeScript — Cole um exemplo de JSON e receba interfaces TypeScript, um schema Zod, JSON Schema ou tipos para Go, Python, Java, C#, Kotlin, Swift e Rust.
- Validador de YAML — Valide YAML com a linha e a coluna exatas de cada erro e pegue os erros que os parsers aceitam sem avisar: booleanos yes/no, tabulações, chaves duplicadas.
- Testador de regex — Teste uma expressão regular num texto de exemplo, com destaque das correspondências ao vivo, grupos de captura e prévia de substituição. Grátis, no navegador.
- Comparador de textos — Compare duas versões de um texto, código ou arquivo JSON e veja exatamente quais linhas, palavras e caracteres mudaram.