Blog
Español

Formatear SQL online — Indentar y embellecer consultas

Formatea SQL (MySQL, PostgreSQL y otros dialectos, mayúsculas, sangría)

Funciona en tu navegador · no se sube nada

Palabras clave
Sangría

SQL formateado

Qué es

Una consulta copiada de un log o de un ORM suele llegar en una sola línea larga, o con una sangría desigual, y cuesta leerla y revisarla. Esta herramienta divide el SQL en cláusulas como SELECT, FROM y WHERE y lo indenta de forma coherente. El resultado se actualiza mientras escribes.

Cómo se usa

  1. Pega tu SQL en la entrada. Puedes incluir varias sentencias separadas por punto y coma.
  2. Elige el dialecto de tu base de datos.
  3. Escoge palabras clave en mayúsculas, en minúsculas o tal como las escribiste.
  4. Elige sangría de 2 espacios, 4 espacios o tabulador y copia el resultado.

Cómo funciona

  • El formateo lo hace la biblioteca de código abierto sql-formatter. Divide la entrada en tokens y decide los saltos de línea y la sangría según la cláusula y el nivel de paréntesis.
  • Los dialectos disponibles son SQL estándar, MySQL, PostgreSQL, MariaDB, SQLite, BigQuery, Oracle (PL/SQL) y SQL Server (T-SQL). El dialecto cambia cómo se leen las comillas de identificador (`, ", [ ]), los marcadores de parámetro (?, $1, @name) y los operadores.
  • Los marcadores de MyBatis #{id}, #{name,jdbcType=VARCHAR} y ${table} se conservan tal cual en todos los dialectos. En MySQL # normalmente inicia un comentario, pero #{ se trata como marcador. También se conserva un marcador repartido en varias líneas; las llaves anidadas como #{list[${i}]} no se admiten.
  • Parámetros enlazados: ? y :name en SQL estándar, MySQL y MariaDB; $1 y :name en PostgreSQL; :name en Oracle; @name en SQL Server y BigQuery; SQLite acepta ?, ?1, :name, @name y $name.
  • Los errores indican la línea, la columna y el texto donde se detuvo el análisis.
  • La opción de mayúsculas solo se aplica a las palabras reservadas. Los literales de cadena, los comentarios y los identificadores, incluidos nombres de tablas y columnas con tildes o ñ, no se modifican.
  • La opción de tabulador usa un carácter de tabulación por nivel de sangría.
  • Solo reformatea. No ejecuta la consulta ni comprueba lo que significa.

Ejemplos

Entrada:

select id, name from users where age > 20 and city = 'Córdoba' order by name

Resultado (SQL estándar, mayúsculas, 2 espacios):

SELECT
  id,
  name
FROM
  users
WHERE
  age > 20
  AND city = 'Córdoba'
ORDER BY
  name

Preguntas frecuentes

¿Mi consulta se envía a un servidor?

No. El formateo se hace en tu navegador con la biblioteca sql-formatter, y las consultas no se transmiten ni se guardan. Aun así, evita mostrar en una pantalla compartida consultas con contraseñas reales o datos personales.

¿Qué dialecto elijo?

El de la base de datos que uses. Así se reconoce bien la sintaxis propia de cada uno, como las comillas invertidas de MySQL o las conversiones `::` y los parámetros `$1` de PostgreSQL. Si no lo tienes claro, empieza por SQL estándar.

¿Formatear puede cambiar lo que hace mi consulta?

Solo cambian los espacios, los saltos de línea y las mayúsculas de las palabras clave. Los literales de cadena, los comentarios y los identificadores conservan su contenido, y el cambio de mayúsculas nunca toca valores entre comillas, así que la consulta se comporta igual.

¿Y si aparece un error?

Una comilla sin cerrar o un símbolo que el dialecto elegido no admite pueden detener el analizador. Revisa el punto que indica el mensaje o prueba con otro dialecto. Es un formateador, no un validador, así que no detectará todos los errores de tu SQL.

¿Echas en falta alguna herramienta?