Também disponível em: English · Español · Français · العربية
Formatador de SQL
Cola uma consulta numa única linha e recebe-a organizada por cláusulas, com o dialeto certo para não corromper aspas nem comentários.
O que é um formatador de SQL?
Um formatador de SQL pega numa instrução escrita numa única linha comprida, ou colada com indentação inconsistente, e reorganiza-a por cláusulas: cada SELECT, FROM, WHERE e JOIN na sua própria linha, indentados de forma consistente, com as palavras-chave na caixa que escolheres. Não muda o que a consulta faz — só a forma como se lê.
Quem precisa disto é sobretudo quem lida com SQL que ninguém escreveu para ser lido: uma consulta copiada de um registo de servidor, gerada de uma só vez por um ORM, ou herdada num relatório antigo sem qualquer indentação. Nesses casos, perceber onde acaba um JOIN e começa a condição seguinte custa mais tempo do que devia.
Aqui, cola-se a consulta à esquerda e o resultado formatado aparece à direita à medida que escreves, com um botão para copiar assim que estiver como precisas.
Como usar o formatador
- Cola o SQL. Cola a consulta no painel da esquerda, ou carrega um exemplo para experimentar a ferramenta sem teres SQL à mão.
- Escolhe o dialeto e o estilo. Seleciona o dialeto (Padrão, MySQL, SQL Server ou PostgreSQL), a indentação e a caixa das palavras-chave, e o resultado à direita atualiza-se de imediato.
- Confirma e copia. Verifica quantos elementos saíram intactos e copia o SQL formatado com um clique.
O que esta ferramenta garante
Não existe uma especificação para formatar SQL. O XML tem uma, e o Markdown tem o CommonMark com 652 exemplos resolvidos, mas onde se corta uma cláusula, quanto se indenta uma subconsulta e se as palavras-chave vão em maiúsculas são decisões de estilo da casa, não regras de uma norma. Por isso «correto» não está definido para este trabalho, e qualquer ferramenta que anuncie uma percentagem de acerto inventou-a.
O que se pode garantir, e se garante aqui, é que formatar nunca muda o que a consulta faz. Duas promessas concretas: cada literal de texto, cada identificador entre aspas e cada comentário sai byte a byte igual ao que entrou; e a sequência de elementos da consulta não muda, sem nada acrescentado, perdido ou reordenado. Só o espaço em branco entre elementos se move, e só a caixa das palavras-chave muda.
Isto verifica-se com um teste, não apenas se promete. A sequência de elementos é comparada antes e depois de formatar, sobre um corpus escrito à mão e um varrimento gerado de 1500 instruções nos quatro dialetos, com um caso de controlo que prova que a comparação é capaz de falhar caso algo mude. No total, 1802 verificações.
Isto importa em concreto: um formatador que quebra a linha em cada vírgula vai quebrá-la também dentro de um literal de texto, partindo um dado teu em duas linhas. Um que põe em maiúsculas todas as palavras-chave vai pôr em maiúsculas a palavra select dentro de uma cadeia de texto, ou dentro de uma coluna chamada precisamente «select». Os dois mudam o resultado da consulta, não apenas o seu aspeto.
Porque o dialeto não é um pormenor
O seletor de dialeto é uma funcionalidade de correção, não uma preferência de estilo: escolhe as regras de citação, o único ponto onde errar corrompe uma consulta em vez de apenas mudar a sua aparência. O MySQL cita identificadores com acentos graves e trata o cardinal como início de comentário de linha. O SQL Server cita-os com parênteses retos, pelo que uma palavra reservada entre parênteses retos é ali um nome de coluna. O PostgreSQL e o SQL padrão usam aspas duplas, e o PostgreSQL acrescenta ainda corpos citados com cifrões, cujo conteúdo pode incluir pontos e vírgulas, aspas e absolutamente tudo o resto.
Ler uma consulta MySQL com acentos graves usando as regras padrão faz esses acentos parecerem pontuação vulgar. Ler o corpo de uma função PostgreSQL sem suporte para citação com cifrões destrói o seu conteúdo como se fosse SQL comum. Nenhuma destas coisas é questão de gosto — não há um dialeto por omissão seguro, e é por isso que a ferramenta pergunta antes de formatar.
Há também uma limitação honesta a declarar: as regras de disposição são deliberadamente poucas. As palavras-chave de cláusula começam linha, os JOIN indentam um nível abaixo delas, os parênteses abrem um nível e as vírgulas quebram a linha. É um conjunto de regras mais pequeno do que o de outras ferramentas, e obedece ao mesmo princípio da garantia acima: tudo o que o formatador não reconhece passa tal e qual, em vez de ser adivinhado.
Porque é gratuito?
Porque a formatação acontece inteiramente no teu navegador. O SQL nunca sai do teu computador para um servidor, por isso não há custo por consulta a repassar nem motivo para pedir conta ou registo.
Sem marca de água, sem limite de utilizações, sem nada enviado. Cola, escolhe o dialeto e o estilo, e copia o resultado quantas vezes precisares.