Formatador SQL
Cole uma instrução SQL de uma linha copiada de um log ou de um ORM, e o formatador a divide em cláusulas indentadas com capitalização consistente de palavras-chave, novas linhas antes de SELECT, FROM, WHERE, GROUP BY e colunas alinhadas na projeção. Suporta dialetos MySQL, PostgreSQL, SQL Server, Oracle, SQLite e BigQuery, cada um tem palavras-chave e palavras reservadas ligeiramente diferentes.
Como a formatação funciona
-
1
Cole seu SQL
Blob de uma linha, saída minificada do Hibernate, o que for. Múltiplas instruções separadas por `;` são todas formatadas.
-
2
Escolha o dialeto e o estilo
O dialeto controla a lista de palavras-chave; o estilo controla a colocação da vírgula (inicial vs final), largura da indentação e palavras-chave em maiúsculas/minúsculas.
-
3
Tokens são analisados, não substituídos por regex
Um tokenizador lida corretamente com strings, comentários, parênteses e subconsultas. Literais de string são preservados verbatim.
-
4
Copie a saída formatada
SQL validado, mesma semântica, layout mais limpo.
Antes e depois
Antes:
SELECT u.id,u.name,COUNT(o.id) AS orders FROM users u LEFT JOIN orders o ON o.user_id=u.id WHERE u.created_at>='2024-01-01' GROUP BY u.id,u.name HAVING COUNT(o.id)>5 ORDER BY orders DESC LIMIT 50;
Depois (vírgula inicial, palavras-chave em maiúsculas, indentação de 2 espaços):
SELECT
u.id
, u.name
, COUNT(o.id) AS orders
FROM users u
LEFT JOIN orders o
ON o.user_id = u.id
WHERE u.created_at >= '2024-01-01'
GROUP BY u.id, u.name
HAVING COUNT(o.id) > 5
ORDER BY orders DESC
LIMIT 50;
Escolhas de estilo que importam
- Palavras-chave em maiúsculas vs minúsculas. MAIÚSCULAS é tradicional e escaneável. Minúsculas são mais limpas em editores de código modernos com destaque de sintaxe.
- Vírgulas iniciais vs finais. Inicial (
, col) facilita comentar uma única coluna. Final (col,) é mais natural na leitura do texto. - Colocação de vírgula em
GROUP BY. Frequentemente uma por linha para cláusulas longas, inline para curtas. - Indentação de JOIN.
ONna próxima linha (indentação suspensa) vs na mesma linha. Condições longas se beneficiam da indentação suspensa. - Subconsultas. Indente toda a subconsulta, não apenas o parêntese de abertura.
Armadilhas específicas do dialeto
- Backticks do MySQL vs aspas duplas do PostgreSQL para identificadores.
- CTEs
WITH, MS SQL tem um requisito de;antes deWITH; o formatador lida com isso. - Funções de janela, cláusulas longas
OVER (...)se beneficiam dePARTITION BYeORDER BYquebrados em linha. - BigQuery tem
ARRAY_AGG,STRUCTe sufixos de tabela (*_yyyymmdd) que o tokenizador não deve quebrar. - Oracle tem a sintaxe de junção externa
(+), o formatador a preserva, mas a sinaliza como legado.
O que o formatador não faz
- Corrigir bugs, um JOIN inválido permanece inválido.
- Expandir
SELECT *, listas de colunas não são inferidas a partir do esquema. - Otimizar consultas, apenas layout, não planos de execução.
- Reescrever subconsultas como CTEs, uma preocupação diferente.
Perguntas frequentes
Não, é puramente cosmético. Espaços em branco, quebras de linha e colocação de vírgula mudam, mas palavras-chave, operadores, literais e identificadores são preservados exatamente.
Suportado, CREATE TABLE, ALTER, CREATE PROCEDURE, gatilhos. O formatador lida com construções de bloco (BEGIN ... END) e continuações de linha dentro de procedimentos.
Não deveria, se isso acontecer, é provavelmente uma incompatibilidade de dialeto. Tente mudar o dialeto. Por favor, relate falhas persistentes; tratamos como bugs.
Flink SQL e Cassandra CQL parecem semelhantes, mas têm palavras-chave específicas de dialeto que formatadores convencionais distorcem. Use com cautela e verifique se a saída funciona.
Ferramentas relacionadas
Referência da Tabela ASCII
Tabela ASCII completa de 0 a 127 com valores decimais, hexadecimais, octais e binários e notação de referência numérica HTML, incluindo NUL, LF e DEL.
Referência de Caracteres HTML
Lista pesquisável de entidades HTML, seus códigos nomeados e numéricos, e uma cópia com um clique para caracteres e símbolos especiais.
Conversor de Tamanho de Arquivo
Converta entre bytes, KB, MB, GB, TB e as unidades binárias IEC (KiB, MiB, GiB, TiB), combinando decimal e binário como preferir.
Referência de atalhos de teclado
Pesquise atalhos padrão documentados do VS Code, Chrome e Bash com GNU Readline no macOS, Windows e Linux.
Gerador de Docker Compose
Gere um docker-compose.yml a partir de definições de serviços com imagem, portas e volumes, com padrões de boas práticas.
Visualizador de Markdown
Escreva Markdown e veja a renderização HTML atualizar ao vivo. Sintaxe com estilo GitHub, incluindo tabelas, listas de tarefas, blocos de código cercados e autolinks.
Ferramenta disponível em outros idiomas
- Formateador SQL [ES]
- Định dạng SQL [VI]
- تنسيق SQL [AR]
- SQLフォーマッター [JA]
- Formateur SQL [FR]
- SQL-formaterare [SV]
- SQL 포매터 [KO]
- Format SQL [ID]
- SQL-Formatter [DE]
- SQL-formatter [NL]
- รูปแบบ SQL [TH]
- Formater SQL [PL]
- Форматтер SQL [RU]
- SQL Biçimlendirici [TR]
- SQL 格式化器 [ZH]
- SQL Formatter [EN]
- Formatter SQL [IT]