SQL Query Formatter [geschlossen]

14

Gibt es (Linux-basierte) SQL Query Formatierungsprogramme / Plugins / Erweiterungen?

Ich benutze PostgreSQL und MySQL, aber auch andere Datenbanken sind willkommen.

Ich kann eine VM zum Testen verwenden, bevorzuge jedoch eine Linux (Ubuntu) -basierte Lösung.

Ich habe eine Online-Version gesehen, aber nichts als installierbar.

Eclipse-basierte IDEs sind ebenfalls von Vorteil

Beispiel:

select f1, f2, fname, lName from tblName where f1 = true and fname is not null order by lName asc

zu so etwas wie

SELECT f1, f2, fname, lName
FROM tblName
WHERE f1 = true
AND fname IS NOT NULL
ORDER BY lName ASC

Hier ist ein Online-Beispiel:

Aber ich würde das lieber in einer lokalen Umgebung tun

Verbunden:

AKTUALISIEREN:

Betrachtet man dies:

FINAL UPDATE:

Während dies ein Overkill sein könnte, hat Jet Brains eine neue Datenbank-IDE, die einige großartige Optionen für die Neuformatierung bietet

Phill Pafford
quelle
Haben Sie sich bereits den SQLinForm-Formatierer ( sqlinform.com ) angesehen ? Es ist in Java geschrieben und läuft daher unter Linux und verfügt über eine Befehlszeilenversion und eine verfügbare API
Guido

Antworten:

8

pgAdmin wird mit einem eingebauten Abfrageformatierer geliefert . Sie würden eine Ansicht erstellen, um die Abfrage so zu formatieren:

Bildbeschreibung hier eingeben

Nicht in Anführungszeichen gesetzte Bezeichner für gemischte Groß- und Kleinschreibung werden natürlich in Kleinbuchstaben umgewandelt. (Aber ich würde das als Segen betrachten.)

Und Rauschwörter wie ASCin ORDER BYwerden abgeschnitten.

Und zu guter Letzt müsste die Ansicht zunächst in der Datenbank gültig sein. Also nicht genau das , wonach du gefragt hast. Abfragen werden ausgehend von der Ansichtsdefinition in umgekehrter Reihenfolge erstellt.

Erwin Brandstetter
quelle
1
Tut mir leid, ich glaube, Sie haben die Frage falsch verstanden. Ich kann sie selbst formatieren. Was ich suche, ist etwas, um dies in einem Befehl oder einer IDE zu tun. Beispiel: Ich würde die Abfrage markieren und Strg + Umschalt + F drücken, dies würde automatisch einrücken, alle Schlüsselwörter in UPPER, jeder Befehl / jedes Schlüsselwort beginnt in einer neuen Zeile, etc ... Also, wenn jemand diese lange Abfrage eingibt oder ein Skript erstellt, habe ich nur Ich möchte einen schnellen Weg, um es zu formatieren, anstatt dies von Hand zu tun. Hier ist ein Online-Beispiel: dpriver.com/pp/sqlformat.htm
Phill Pafford
1
@PhillPafford: Ja, nicht genau das, wonach Sie suchen. Das, was einem mir bekannten PostgreSQL-Abfrageformatierer am nächsten kommt. Das heißt nicht, dass da draußen nichts ist.
Erwin Brandstetter
Haben Sie versucht, jetbrains.com/dbe
Phill Pafford
3

Während generischer (SQL anstelle von pgSQL), ist fsqlf ( http://sourceforge.net/projects/fsqlf/ ) ein Open Source-Befehlszeilen- oder GUI-Programm zum Formatieren von SQL. Es wird eine formatting.conf-Datei unterstützt, die Ihnen viel Flexibilität beim Aussehen des Endprodukts bietet.

Beispiele:

  [wwalker@speedy:~] 
$ 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
  [wwalker@speedy:~] 
$ vim formatting.conf # 2 character change
  [wwalker@speedy:~] 
$ 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
  [wwalker@speedy:~] 
$ vim formatting.conf # 1 character change
  [wwalker@speedy:~] 
$ 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
  [wwalker@speedy:~] 
$ 
Wayne Walker
quelle
0

BlancoSqlEditorPlugin ist ein auf dem Eclipse-Plugin basierender SQL-Formatierer. Es ist in Java geschrieben und ist OSS.

Tosiki Iga
quelle
Gibt es eine englische Version dieser Seite?
Dezso
0

Der Abfrageeditor von MySQL Workbench bietet von Haus aus einen SQL Query Formatter: Sie müssen nur auf das Symbol "Verschönern" klicken, wie unten gezeigt (roter Kreis). Beachten Sie, dass sich dadurch die Groß- und Kleinschreibung der SQL-Operatoren nicht ändert. (Ich habe einen Fehlerbericht eingereicht .)

Bildbeschreibung hier eingeben

Franck Dernoncourt
quelle
-1

SQLinForm ( http://www.sqlinform.com ) basiert auf Java und kann daher in einer Linux-Umgebung ausgeführt werden. Sie verfügen über eine API und eine Befehlszeilenversion, die Sie problemlos in Ihren Skripten verwenden können.

Guido
quelle