Formateador SQL/ MySQL · PostgreSQL
Embellece o comprime consultas SQL al instante. Compatible con MySQL, PostgreSQL y SQL generico.
¿Esta herramienta resolvió tu problema?
Ejemplos de codigo
Python (sqlparse)
import sqlparse
sql = "select id,name from users where active=1"
# Format / beautify
formatted = sqlparse.format(
sql,
reindent=True,
keyword_case='upper',
identifier_case='lower',
strip_comments=False,
indent_width=2,
)
print(formatted)
# SELECT id, name
# FROM users
# WHERE active = 1
# Minify
minified = sqlparse.format(
sql,
strip_whitespace=True,
keyword_case='upper',
)Node.js (sql-formatter)
import { format } from 'sql-formatter';
const sql = `select id,name,email
from users where status='active'`;
// Format for MySQL
const formatted = format(sql, {
language: 'mysql',
tabWidth: 2,
keywordCase: 'upper',
linesBetweenQueries: 2,
});
// Format for PostgreSQL
const pgFormatted = format(sql, {
language: 'postgresql',
tabWidth: 2,
keywordCase: 'upper',
});
console.log(formatted);
// SELECT
// id,
// name,
// email
// FROM users
// WHERE status = 'active'CLI (pgFormatter)
# Install pgFormatter (Perl) # https://github.com/darold/pgFormatter cpanm pgFormatter # Format a file pg_format query.sql -o formatted.sql # Format from stdin echo "select * from users" | pg_format # Options pg_format query.sql --spaces 2 --keyword-case 1 --function-case 2 # Using prettier-plugin-sql (Node) npx prettier --plugin prettier-plugin-sql --parser sql query.sql
Go
package main
import (
"fmt"
"strings"
"unicode"
)
// Simple SQL keyword uppercaser
func formatSQL(sql string) string {
keywords := []string{
"SELECT", "FROM", "WHERE",
"JOIN", "LEFT JOIN", "INNER JOIN",
"GROUP BY", "ORDER BY", "HAVING",
"INSERT INTO", "VALUES", "UPDATE",
"SET", "DELETE FROM", "LIMIT",
}
result := sql
for _, kw := range keywords {
lower := strings.ToLower(kw)
result = strings.ReplaceAll(
result, lower,
"\n"+kw,
)
}
return strings.TrimSpace(result)
}
// For production use, consider:
// github.com/xwb1989/sqlparser (MySQL)
// github.com/pganalyze/pg_query_go (PostgreSQL)
func main() {
sql := "select id from users where id=1"
fmt.Println(formatSQL(sql))
}Preguntas frecuentes
Que es el formateo / embellecimiento de SQL?
El formateo SQL (embellecimiento) transforma una consulta SQL compacta o escrita de forma inconsistente en una forma legible con indentacion consistente. Agrega saltos de linea antes de las clausulas principales (SELECT, FROM, WHERE, JOIN, etc.) y convierte las palabras clave a mayusculas. Esto no cambia lo que hace la consulta, solo como se ve.
Es compatible con la sintaxis de MySQL y PostgreSQL?
El formateador maneja la sintaxis SQL comun compartida por MySQL, PostgreSQL y la mayoria de los otros RDBMS. Las caracteristicas especificas del dialecto, como el operador de conversion :: de PostgreSQL o los identificadores con backtick de MySQL, se tokenizan correctamente. Selecciona tu dialecto para indicar que convenciones de sintaxis estas utilizando.
Para que se usa la minificacion de SQL?
La minificacion elimina todos los espacios en blanco y comentarios adicionales para producir la forma mas compacta de una consulta. Es util al incrustar SQL en cadenas de codigo, enviar SQL en registros o reducir la verbosidad de los registros de consultas. Las consultas minificadas son funcionalmente identicas a sus versiones formateadas.
Como formateo consultas SQL desde la linea de comandos?
Para PostgreSQL, usa pg_format (Perl). Para MySQL, usa el paquete de Python mysqlformat. Tambien puedes usar sqlparse en Python: import sqlparse; sqlparse.format(sql, reindent=True, keyword_case='upper'). Consulta los ejemplos de codigo a continuacion.
Por que se eliminan mis comentarios despues de la minificacion?
La minificacion elimina intencionalmente los comentarios SQL (-- comentarios de una linea y /* comentarios de bloque */) para reducir el tamano. Si necesitas conservar los comentarios, usa el modo de formato en su lugar, que mantiene todos los comentarios y los reformatea en el nivel de indentacion correcto.
Puede el formateador manejar CTEs (clausulas WITH)?
Si. Las expresiones de tabla comunes WITH ... AS (...) son reconocidas. La palabra clave WITH inicia un nuevo bloque. Las sentencias SELECT anidadas dentro de los CTEs tambien se indentan adecuadamente.