2008-12-24 17 views
26

¿Alguien sabe de un programa, una utilidad o alguna biblioteca programática, preferiblemente para Linux, que toma una cadena SQL sin formato y la imprime bastante?Formateador de cadenas SQL

Por ejemplo, me gustaría la siguiente

select * from users where name = 'Paul' 

cambiar a algo como esto

select * 
from users 
where 
    name = 'Paul' 

El formato exacto no es importante. Solo necesito algo para tomar una cadena SQL grande y dividirla en algo más legible.

Respuesta

8

http://www.sqlinform.com/

Esta herramienta cambia el formato de código SQL. Lo he usado con resultados increíbles. Es gratis como una aplicación web y también tiene una versión descargable.

+1

Tenga cuidado con las aplicaciones web como esta cuando pegue datos confidenciales. ¿Confías en que no está guardando una copia de esa información? –

+0

Tienen un formateador en línea gratuito también – Guido

0

No es que recomiendo gastar el dinero (relativamente grande) para este fin, pero Toad tiene una función incorporada que hace exactamente lo que está buscando.

Incluye un conjunto de opciones que le permiten configurar exactamente cómo quiere que su SQL formatee (todas las columnas en líneas separadas, etc.). Muy lindo, pero solo si ya tienes Sapo. Sé que la versión de Oracle hace esto, pero supongo que el SQL Server u otras versiones también lo harían.

3

Me gusta usar http://www.dpriver.com - es un complemento agradable para SQL Server Management Studio.

+2

Un motivo favorito - ¿por qué SSMS ya no tiene formato de código? –

8

fsqlf (http://sourceforge.net/projects/fsqlf/) es una línea de comando o programa GUI, de código abierto, para formatear SQL. Es compatible con tener un archivo formatting.conf que le permite mucha flexibilidad en la apariencia del producto final.

Ejemplos:

☺ [[email protected]:~] 
$ echo "select f1, f2, fname, lName from tblName where f1 = true and fname is not null order by lName asc" | fsqlf 

SELECT 
    f1 
, f2 
, fname 
, lName 
FROM tblName 
WHERE f1=true 
AND fname is not null 
ORDER BY lName asc 
☺ [[email protected]:~] 
$ vim formatting.conf # 2 character change 
☺ [[email protected]:~] 
$ echo "select f1, f2, fname, lName from tblName where f1 = true and fname is not null order by lName asc" | fsqlf 

SELECT 
f1 , 
f2 , 
fname , 
lName 
FROM tblName 
WHERE f1=true 
AND fname is not null 
ORDER BY lName asc 
☺ [[email protected]:~] 
$ vim formatting.conf # 1 character change 
☺ [[email protected]:~] 
$ echo "select f1, f2, fname, lName from tblName where f1 = true and fname is not null order by lName asc" | fsqlf 

SELECT 
f1 , f2 , fname , lName 
FROM tblName 
WHERE f1=true 
AND fname is not null 
ORDER BY lName asc 
☺ [[email protected]:~] 
$ 
+2

¡Esta es la mejor respuesta! ¡Debido a que puede formatear consultas SQL en su propia máquina con una herramienta de código abierto sin tener que utilizar un sitio web de terceros o una herramienta propietaria! Con sombrías políticas de retención de datos y privacidad. – bitek

33

Echa un vistazo a sqlparse. Es un módulo de Python que instala el comando sqlformat. El uso es simple, por ejemplo .:

sqlformat --reindent --keywords upper --identifiers lower my_file.sql 

Me trataron las alternativas antes mencionadas de la CLI, pero:

  • sqlinform está fuera, porque quiero una aplicación CLI de código abierto.
  • fsqlf tiene solo algunas características (create view falta por ejemplo).

Gracias a sqlformat incluso aprendieron que "REF" es una reserved keyword in SQL:2011 and SQL:2008.

+0

Esto totalmente fallido el formato (de sangría) que quería, sin importar los argumentos suministrados. – Shadetheartist