SQL Formatter: Formatear y embellecer SQL
SQL formatter: embellece consultas para MySQL, PostgreSQL, SQL Server, SQLite y más. Mayúsculas en keywords, indentación y minificación. Gratis.
¿Qué es SQL Formatter?
SQL Formatter es una herramienta basada en navegador que transforma consultas SQL sin formato, comprimidas o con estilos inconsistentes en código limpio y legible con indentación adecuada y uso consistente de mayúsculas en keywords. Los desarrolladores y analistas de datos encuentran SQL mal formateado constantemente — consultas escritas inline en código de aplicación, salida de logs de debug de ORM, SQL copiado de documentación o consultas que evolucionaron con ediciones incrementales y perdieron su estructura.
La herramienta toma ese SQL crudo y aplica formateo consciente del dialecto usando la biblioteca sql-formatter, que entiende las reglas de sintaxis de Standard SQL, MySQL, MariaDB, PostgreSQL, PL/SQL (Oracle), T-SQL (SQL Server) y SQLite. Puedes elegir tu dialecto objetivo, establecer el ancho de indentación, alternar mayúsculas en keywords y minificar el resultado. Todo el procesamiento se ejecuta localmente en tu navegador sin servidor, registro ni costo.
Funciones principales
- Formatear SQL con indentación adecuada — Usa la biblioteca
sql-formattercontabWidthconfigurable y espaciadolinesBetweenQueries: 2entre múltiples sentencias en un solo pegado. - Soporte para múltiples dialectos SQL — Elige entre Standard SQL, MySQL, MariaDB, PostgreSQL, PL/SQL (Oracle), T-SQL (SQL Server) y SQLite. La selección de dialecto afecta cómo el formatter maneja la sintaxis específica del dialecto y las palabras reservadas.
- Configuración de indentación personalizable — Selecciona 2 o 4 espacios de indentación desde la barra de acción.
- Toggle de mayúsculas en keywords — Un botón alterna entre
keywordCase: 'upper'ykeywordCase: 'preserve'. Cuando está activo (por defecto), todos los keywords SQL se estandarizan a mayúsculas (SELECT,FROM,WHERE,JOIN, etc.). Cuando está desactivado, el casing se deja tal como está. - Minificar SQL — Elimina el espacio en blanco extra formateando con
tabWidth: 0y colapsando el resultado. La salida minificada es una sola línea con espacios simples entre tokens. - Copiar salida formateada al portapapeles — API Clipboard con fallback de textarea.
- Descargar como archivo .sql — Guarda la salida como
formatted.sqlcon tipo MIMEtext/sql. - Atajos de teclado — Ctrl+Enter (Cmd+Enter) formatea; Ctrl+Shift+M (Cmd+Shift+M) minifica.
Cómo usar SQL Formatter
Paso 1: Pegar SQL
Abre la herramienta en /developer/code/sql-formatter. Pega tu consulta o consultas SQL en el panel de entrada a la izquierda. Se soportan múltiples sentencias separadas por punto y coma — el formatter coloca dos líneas en blanco entre cada sentencia en la salida.
Paso 2: Seleccionar dialecto y opciones
En la barra de acción debajo de los paneles:
- Elegir un dialecto del dropdown: Standard SQL, MySQL, MariaDB, PostgreSQL, PL/SQL (Oracle), T-SQL (SQL Server) o SQLite. Selecciona el que corresponde al motor de base de datos donde se ejecutará tu consulta para el formateo más preciso.
- Elegir indentación: 2 o 4 espacios.
- Alternar Uppercase: El botón Uppercase está activo por defecto. Cuando está activo, todos los keywords SQL se normalizan a mayúsculas. Haz clic para desactivarlo y preservar tu casing original.
Paso 3: Clic en Format
Haz clic en Format o presiona Ctrl+Enter / Cmd+Enter. El SQL formateado aparece en el panel de salida de solo lectura. La herramienta muestra el dialecto en la entrada del historial (p. ej., "Formatted POSTGRESQL (2,4 KB)").
Ejemplo de entrada — consulta inline de la salida de debug de la aplicación:
select u.id,u.email,u.created_at,count(o.id) as order_count,sum(o.total_amount) as total_spent from users u left join orders o on u.id=o.user_id where u.active=true and u.created_at>='2024-01-01' group by u.id,u.email,u.created_at having count(o.id)>0 order by total_spent desc limit 25
Salida con dialecto PostgreSQL, indent de 2 espacios, uppercase activo:
SELECT
u.id,
u.email,
u.created_at,
COUNT(o.id) AS order_count,
SUM(o.total_amount) AS total_spent
FROM
users u
LEFT JOIN orders o ON u.id = o.user_id
WHERE
u.active = TRUE
AND u.created_at >= '2024-01-01'
GROUP BY
u.id,
u.email,
u.created_at
HAVING
COUNT(o.id) > 0
ORDER BY
total_spent DESC
LIMIT
25
Paso 4: Minificar (opcional)
Haz clic en Minify o presiona Ctrl+Shift+M / Cmd+Shift+M para producir una cadena SQL de una sola línea. Las configuraciones de uppercase y dialecto siguen aplicando durante la minificación. El SQL minificado es útil para incrustar consultas en variables de entorno, cadenas de configuración o diffs de comparación donde los cambios de línea serían ruidosos.
Salida minificada de la misma consulta:
SELECT u.id, u.email, u.created_at, COUNT(o.id) AS order_count, SUM(o.total_amount) AS total_spent FROM users u LEFT JOIN orders o ON u.id = o.user_id WHERE u.active = TRUE AND u.created_at >= '2024-01-01' GROUP BY u.id, u.email, u.created_at HAVING COUNT(o.id) > 0 ORDER BY total_spent DESC LIMIT 25
Paso 5: Copiar o descargar
Haz clic en Copy para colocar la salida en tu portapapeles. Haz clic en Download para guardar formatted.sql. Ambos botones están desactivados hasta que exista salida en el panel derecho.
Ejemplos prácticos
Limpiar consulta de debug de ORM
La salida de debug de Django o Rails registra consultas en una sola línea con casing mixto. Una entrada típica del log de consultas de Django:
select "products"."id", "products"."name", "products"."price", "products"."stock_count" from "products" where "products"."category_id" = 12 and "products"."active" = true order by "products"."name" asc
Selecciona el dialecto PostgreSQL (Django usa comillas dobles de estilo PostgreSQL), activa uppercase y haz clic en Format. La salida muestra indentación adecuada con keywords en mayúsculas preservando los identificadores entre comillas dobles.
Revisar un procedimiento almacenado
Un procedimiento almacenado de T-SQL fue registrado en control de versiones como un bloque único sin formato. Selecciona el dialecto T-SQL (SQL Server) y haz clic en Format para obtener una versión indentada y legible con casing consistente. La versión formateada es más fácil de revisar en un diff de pull request y puede ser enviada de vuelta para reemplazar el original.
Incrustar una consulta en configuración
Tu aplicación almacena una consulta de reporte en un archivo de configuración YAML como una cadena de una sola línea. Construye y prueba la consulta con el formato adecuado en SQL Formatter, luego haz clic en Minify para producir la versión compacta para incrustar. Mantener la versión formateada en un comentario junto a la minificada hace que el archivo de configuración sea mantenible.
# Versión formateada (para legibilidad):
# SELECT product_id, SUM(quantity) AS units_sold
# FROM order_items
# WHERE order_date >= :start_date
# GROUP BY product_id
# ORDER BY units_sold DESC
report_query: "SELECT product_id, SUM(quantity) AS units_sold FROM order_items WHERE order_date >= :start_date GROUP BY product_id ORDER BY units_sold DESC"
Consejos y mejores prácticas
Coincide el dialecto con tu base de datos. Aunque la mayoría del formateo SQL es independiente del dialecto, la biblioteca sql-formatter maneja la sintaxis específica del dialecto (como la sintaxis de cast :: en PostgreSQL, TOP en T-SQL y las diferencias de colocación de LIMIT/OFFSET) con más precisión cuando se selecciona el dialecto correcto.
Usa mayúsculas para legibilidad en code review. La convención SQL de keywords en mayúsculas es ampliamente reconocida y hace que los componentes estructurales (SELECT, FROM, WHERE, JOIN) sean visualmente distintos de identificadores y literales. Activa el toggle de uppercase antes de formatear código que será revisado o confirmado.
Formatea antes de comparar. Al comparar dos versiones de una consulta, formatea ambas primero con la misma configuración. Los diffs en SQL sin formato producen salida ruidosa porque un solo cambio estructural puede afectar muchas líneas. Los diffs de SQL formateado muestran solo cambios significativos.
Las múltiples sentencias funcionan. Puedes pegar un archivo de migración o un script con múltiples sentencias CREATE TABLE, INSERT y ALTER TABLE separadas por punto y coma. El formatter produce dos líneas en blanco entre cada sentencia para separación visual.
Guarda presets para las convenciones del equipo. Los seguidores de Glyph Widgets pueden guardar la configuración de dialecto, indentación y uppercase como un preset con nombre. Crea un preset por proyecto (p. ej., "MySQL 2-espacios uppercase") para aplicar las convenciones de tu equipo con un clic al cambiar entre proyectos.
Problemas comunes y solución de problemas
Mensaje de error después de hacer clic en Format — La biblioteca sql-formatter lanza un error en sintaxis que no puede reconocer. Las causas comunes son: extensiones propietarias no soportadas por el dialecto seleccionado, código procedural (cuerpos de funciones PL/pgSQL, bloques T-SQL BEGIN/END) o SQL mezclado con sintaxis de plantilla de capa de aplicación como {{ variable }} o #{variable}. Elimina o comenta las partes no soportadas antes de formatear.
Keywords no se convierten a mayúsculas — Confirma que el botón Uppercase está en estado activo (relleno, estilo primario). Si el botón está en estilo outline, el casing está configurado en preserve. Haz clic una vez para habilitar el modo uppercase.
Dialecto incorrecto causa saltos de línea inesperados — Las reglas de salto de línea de la biblioteca sql-formatter varían según el dialecto. Si una consulta se formatea de forma extraña, prueba Standard SQL como dialecto. Por ejemplo, los dialectos PL/SQL y T-SQL pueden manejar el formateo de subconsultas de manera diferente a Standard SQL.
La salida minificada aún tiene múltiples espacios en algunos lugares — El enfoque de minificación colapsa todas las secuencias de espacios en blanco a espacios simples. Sin embargo, si el formatter inserta saltos de línea intencionales dentro de literales de cadena o comentarios, un espacio simple los reemplaza. El contenido entre comillas no se ve afectado — los espacios dentro de cadenas entre comillas simples se preservan.
Error "Please enter SQL to format" — La entrada está vacía. Pega una consulta SQL en el panel izquierdo antes de hacer clic en Format.
El archivo descargado se llama formatted.sql cada vez — Este es el nombre de archivo fijo. Renombra el archivo después de descargarlo para que coincida con la convención de nombres de tu proyecto.
Privacidad y seguridad
SQL Formatter procesa todo el texto SQL localmente en tu navegador usando la biblioteca sql-formatter. Ningún texto de consulta — incluyendo nombres de tablas, nombres de columnas, valores de datos, credenciales en cadenas de conexión u otro contenido — es enviado a un servidor. La herramienta funciona offline una vez que la página ha cargado. Esto la hace segura para usar con nombres de esquemas propietarios, lógica de negocio interna o consultas con datos de ejemplo.
Preguntas frecuentes
¿Es gratuito SQL Formatter? Sí, completamente gratuito. Todas las opciones de formateo, minificación y dialecto están disponibles sin costo ni cuenta. Las funciones de seguidor de Glyph Widgets como presets guardados e historial de sesión están disponibles para los seguidores de Ko-fi, pero el formateo SQL básico es sin restricciones.
¿Funciona offline? Sí. Una vez que la página carga, todo el formateo se ejecuta localmente en tu navegador usando JavaScript. Puedes desconectarte de internet y continuar formateando consultas sin interrupción.
¿Es seguro mi SQL? Sí. Tu SQL nunca se transmite a ningún servidor. Se procesa completamente en la memoria del navegador y se descarta cuando limpias la herramienta o cierras la pestaña. Puedes pegar con seguridad consultas con nombres de tablas internos, lógica de negocio o valores de datos de ejemplo.
¿Qué dialectos SQL son soportados? La herramienta soporta Standard SQL, MySQL, MariaDB, PostgreSQL, PL/SQL (Oracle), T-SQL (SQL Server) y SQLite. Estos corresponden directamente al parámetro language de la biblioteca sql-formatter.
¿Valida la herramienta la sintaxis SQL? La biblioteca sql-formatter realiza suficiente análisis para formatear SQL y lanzará un error en cierta sintaxis que no puede manejar, pero no es un validador SQL estricto. Para una validación real de sintaxis, usa EXPLAIN o el planificador de consultas de tu motor de base de datos.
¿Puedo formatear múltiples consultas a la vez? Sí. Pega múltiples sentencias separadas por punto y coma. El formatter coloca dos líneas en blanco entre cada sentencia formateada, haciendo claros los límites entre consultas.
¿Qué hace exactamente el toggle de Uppercase? Cuando está habilitado, el formatter configura keywordCase: 'upper' en las opciones de sql-formatter, que convierte todas las palabras reservadas SQL a mayúsculas — SELECT, FROM, WHERE, JOIN, ON, GROUP BY, ORDER BY, LIMIT, nombres de funciones como COUNT, SUM, MAX, etc. Cuando está deshabilitado, keywordCase: 'preserve' deja el casing de tu entrada sin cambios.
¿Puede el formatter manejar CTEs (Common Table Expressions)? Sí. Los CTEs (WITH ... AS (...)) se formatean correctamente con indentación adecuada para la definición del CTE y la consulta principal que sigue. Esto aplica para todos los dialectos soportados.
¿Cuál es el atajo de teclado para formatear? Ctrl+Enter en Windows/Linux o Cmd+Enter en macOS. Para minificar, usa Ctrl+Shift+M en Windows/Linux o Cmd+Shift+M en macOS.
¿Puedo formatear sentencias DDL como CREATE TABLE? Sí. La biblioteca sql-formatter maneja DDL (CREATE TABLE, ALTER TABLE, DROP TABLE, CREATE INDEX, etc.) así como DML (SELECT, INSERT, UPDATE, DELETE) y DCL (GRANT, REVOKE). Los scripts mixtos con DDL y DML se formatean correctamente cuando están separados por punto y coma.
Herramientas relacionadas
JSON Formatter — Formatea y valida datos JSON con validación de esquemas, generación de esquemas y un visor de árbol interactivo.
XML Formatter — Formatea y valida documentos XML con indentación configurable y minificación.
YAML Formatter — Formatea archivos de configuración YAML y los convierte a JSON.
Prueba SQL Formatter ahora: SQL Formatter