Saltar al contenido
DeveloperTools

Formateador SQL

Privado

Entrada

Salida

Sobre esta herramienta

Pega una consulta, un script de migración o un procedimiento almacenado entero y léelo maquetado para una persona: una cláusula por línea, una columna por línea cuando la lista es larga, las condiciones con AND y OR al principio de cada línea, y las subconsultas y expresiones CASE abiertas en sus propias líneas. Las sentencias cortas que caben en una línea se quedan en una línea, así que un script de cuarenta updates pequeños no se convierte en cuatrocientas líneas. La salida se actualiza mientras escribes, los dos paneles tienen números de línea y coloreado de sintaxis, y ambos se pueden editar.

Entiende los dialectos procedurales, no solo SQL plano. Lotes de SQL Server y Sybase con GO y sin punto y coma, IF … BEGIN … END y TRY/CATCH; paquetes de Oracle y bloques PL/SQL con DECLARE, manejadores EXCEPTION, cursores y LOOP; funciones de PostgreSQL dentro de cuerpos $$; procedimientos de MySQL y MariaDB con DELIMITER, handlers y WHILE … DO; scripts de SQLite y Db2. El motor se detecta a partir del texto, o lo eliges tú. Las mayúsculas de las palabras clave son conservadoras a propósito: una columna llamada name, date o status nunca se pasa a mayúsculas, y un tipo solo se cambia donde puede ir un tipo.

Los INSERT anchos se maquetan como una rejilla. La lista de columnas y cada fila de VALUES comparten los mismos anchos, de modo que cada valor queda justo debajo del nombre de su columna y una fila de doce valores se lee sin contar comas. Cuando una fila no cabe en la línea se corta en bloques, y todas las filas se cortan por los mismos sitios, todavía alineadas. Las definiciones de CREATE TABLE alinean sus tipos de la misma forma, y las asignaciones de un UPDATE se alinean por el signo igual.

Nada de lo que pegas se transmite. La página es HTML estático y el formateo ocurre en tu pestaña, lo que lo hace seguro para procedimientos de producción, volcados de esquema y cualquier cosa con datos de clientes en los VALUES.

Preguntas frecuentes

¿Se sube mi SQL a algún servidor?

No. El formateador es JavaScript normal que se ejecuta en tu navegador. No hay ningún endpoint en el servidor, así que tus consultas y procedimientos nunca salen de tu dispositivo: puedes desconectarte de la red y sigue funcionando.

¿Qué bases de datos admite?

PostgreSQL, MySQL y MariaDB, SQLite, SQL Server (T-SQL), Sybase ASE, Oracle (PL/SQL), IBM Db2 y un modo de SQL estándar genérico. El dialecto decide cómo se leen las cadenas, los identificadores, los comentarios, las variables y los separadores de lote, y qué forma toman IF, WHILE y DECLARE. Déjalo en detección automática y el motor se adivina a partir del texto; la barra de estado te dice cuál eligió.

¿Cambia lo que hacen las sentencias?

No. Solo cambian los espacios en blanco y las mayúsculas de las palabras clave. Las cadenas, los identificadores entre comillas, los números, los comentarios y todo lo que hay dentro de un cuerpo $$ o de un literal q'[…]' pasan byte a byte. Los comentarios se quedan donde estaban, incluido uno al final de una línea que termina en coma. Una sentencia escrita en una línea y otra escrita en doce producen la misma salida.

¿Qué hace el «ancho de línea»?

Es la columna que el formateador intenta no sobrepasar. Una cláusula, una llamada a función o una fila de INSERT que cabe dentro se queda en una línea; la que no cabe se abre con un elemento por línea. Anchos menores producen salidas más altas; 100 columnas va bien para la mayoría de editores en paralelo, 120 para una pantalla ancha.

¿Puede el cuerpo de un procedimiento empezar en el margen izquierdo?

Sí. Por defecto, el cuerpo de un procedimiento almacenado, una función o un trigger va un nivel por dentro de su cabecera. Cambia la opción de cuerpo de rutinas a «al margen» y las sentencias que siguen a AS, IS o al BEGIN exterior empiezan en el margen, así un procedimiento largo no arrastra un nivel de indentación de más en cada línea. Los bloques dentro del cuerpo, como un IF … BEGIN … END o un bucle, se siguen indentando como siempre.

¿Puede alinear los tipos de parámetros y variables?

Sí. Cambia las declaraciones a «alineadas» y los parámetros de un procedimiento o una función, y las variables de un DECLARE, van uno por línea con sus nombres, tipos y valores por defecto (= NULL, DEFAULT, OUT) alineados en columnas, como muchos equipos escriben los procedimientos almacenados a mano. Un DECLARE de una sola variable se queda en una línea. En «compactas» mantienen la maquetación más corta, juntos en una línea cuando caben. Los argumentos con nombre de un EXEC tienen su propia opción: en «alineados» van uno por línea con los signos igual en la misma columna (@i_cuenta = …, @o_msg = … out).

¿Qué no maneja todavía?

No valida el SQL contra una gramática, así que una errata en una palabra clave pasa sin cambios en vez de reportarse. Las únicas entradas que rechaza son las que no puede leer en absoluto: una cadena o un comentario sin cerrar, o paréntesis desbalanceados, que reporta por línea y columna. Snowflake, BigQuery y Hive no tienen aún modo propio; el modo estándar formatea sus consultas pero no sus extensiones de scripting.

¿Qué tamaño de script puedo formatear?

El límite es la memoria de tu navegador, no un tope de subida. Un INSERT de 5000 filas se formatea en bastante menos de un segundo; a partir de unos 400 KB el coloreado de sintaxis se apaga para que escribir siga siendo fluido, y el texto sigue siendo editable.

¿Es gratis de verdad?

Sí, sin cuenta y sin límite de uso. El sitio se financia con anuncios colocados alrededor de la herramienta, nunca dentro de tu área de trabajo.

Flechas para moverte, Enter para abrir, Esc para cerrar