Formatador de SQL

Embeleze SQL bagunçado com o motor open-source sql-formatter: escolha dialeto, caixa das palavras-chave e indentação das consultas.

A formatação acontece localmente no seu navegador. Suas consultas nunca saem do dispositivo.

Indentação
SQL formatado
—

Como funciona

A formatação é feita pelo sql-formatter, a mesma biblioteca open-source (MIT) que esta página embute do npm. Roda em três passos: um tokenizador específico de dialeto divide sua consulta em palavras-chave, identificadores, strings e operadores; um passe de parse leve infere a estrutura das cláusulas (o que é lista SELECT, o que está aninhado num CASE); e um escritor de layout reemite os tokens uma cláusula por bloco com sua indentação e caixa. Nenhum banco de dados participa em nenhum momento.

Tokenizador, não validador
Como o motor trabalha sobre tokens, ele formata qualquer coisa que dê para separar em tokens SQL — inclusive consultas pela metade que você está digitando. Ele não vai dizer que uma tabela não existe ou que um JOIN está logicamente errado; a sintaxe só é checada até onde a tokenização exige. A biblioteca também não trata stored procedures nem delimitadores personalizados, e esses casos geram um erro visível em vez de um resultado mutilado.
Os cinco dialetos daqui (e há mais)
Esta página oferece SQL padrão, MySQL, PostgreSQL, SQLite e BigQuery — os motores de onde a maioria cola consultas. A biblioteca por baixo conhece ainda ClickHouse, DB2, Hive, MariaDB, N1QL, Oracle PL/SQL, Redshift, Snowflake, Spark, Transact-SQL, Trino e outros; a escolha do dialeto afeta as regras de tokenização (crases, casts ::, @params), por isso formatar com o errado pode parecer levemente estranho.
Por que MAIÚSCULAS é o padrão
SQL não diferencia caixa nas palavras-chave, então o estilo é o único sinal que separa um SELECT perdido de um identificador proposital. A convenção de palavras-chave em maiúsculas (cláusulas gritam, dados ficam como digitados) é o estilo dominante em livros, linters e guias de time, e deixa a estrutura da consulta escaneável de relance. Escolha minúsculas ou preservar se o padrão do seu time for outro — a ferramenta obedece.

Perguntas frequentes

Essa ferramenta executa meu SQL em algum lugar?

Não — ela nunca encosta num banco de dados. O formatador lê sua consulta como texto puro, reescreve espaços e caixa de palavras-chave e mostra o resultado. Suas instruções, nomes de tabela e dados ficam no seu dispositivo, e não há conexão para configurar ou tentar.

Existe opção de minificar ou linha única?

Nesta página, não. A biblioteca sql-formatter por baixo (v15, a mesma da versão atual do npm) é um pretty-printer: ela layouta consultas, não as comprime. Versões antigas tinham modo minificado; foi removido lá em cima. Para encolher instruções minificadas de propósito, nossa ferramenta Code Minifier cuida de texto SQL como trabalho separado.

Ele me avisa se meu SQL estiver errado?

Só por acaso. O sql-formatter é um tokenizador mais um motor de layout, não um validador: ele não checa seu schema, nomes de função ou mesmo a conformidade gramatical completa, e a maior parte do texto malformado mas tokenizável formata normalmente. Ele falha mesmo em construções genuinamente não fechadas (como um literal de string aberto), e esse erro aparece na linha de erro.

Por que os resultados diferem entre dialetos para a mesma consulta?

Cada dialeto traz sua própria lista de palavras-chave e regras de tokenização, então o mesmo texto pode ser segmentado de outro jeito: o BigQuery trata de forma especial literais struct e @params, o PostgreSQL conhece casts ::, o MySQL aceita identificadores com crase. Escolha seu motor real antes de formatar — caixa e quebras seguem o tokenizador do dialeto.

Algo é enviado para um servidor?

Não. O formatador é um módulo JavaScript embutido nesta página que roda no seu navegador (sql-formatter, licença MIT). Suas consultas nunca saem do dispositivo — o que importa, porque consultas costumam conter credenciais e dados de clientes.