Verwandeln Sie einzeiliges, unlesbares SQL in eine sauber eingerückte Abfrage — 18 Dialekte, alles in Ihrem Browser.
SQL kommt selten lesbar an: eine endlose Zeile aus einem ORM, jedes Schlüsselwort kleingeschrieben in einem Slow-Query-Log, die Einrückung von einem Chat-Client zerstört. Es erst von Hand umzuformatieren, bevor man es überhaupt lesen kann, kostet zehn Minuten — und beim Lesen stecken die Fehler: eine Join-Bedingung, die klammheimlich zum Filter geworden ist, ein OR, das weiter bindet, als sein Autor dachte, eine Unterabfrage drei Ebenen tief. Fügen Sie es hier ein, und es kommt zurück mit einer Klausel pro Zeile, ausgerichteter Verschachtelung und Schlüsselwörtern in der Schreibweise Ihrer Wahl.
Die Arbeit erledigt ein echter Parser, kein Haufen regulärer Ausdrücke. Die Abfrage wird tokenisiert, als Baum aus Klauseln verstanden und neu ausgegeben — deshalb bleiben Kommentare in der Zeile, in der sie geschrieben wurden, überstehen Zeichenketten-Literale unangetastet, selbst wenn sie Wörter wie SELECT oder FROM enthalten, und eine Fensterfunktion behält ihren Block OVER (PARTITION BY … ORDER BY …) sauber verschachtelt. Achtzehn Dialekte stehen zur Wahl — Standard SQL, PostgreSQL, MySQL, MariaDB, SQLite, SQL Server (T-SQL), Oracle PL/SQL, BigQuery, Snowflake, Redshift, Spark, Trino, Hive, Db2, Db2 for i, TiDB, SingleStore und N1QL —, und die Wahl ist keine Zierde: PostgreSQL-Dollar-Quoting ($$body$$) und T-SQL-Klammern ([dbo].[table]) sind unter Standard SQL Parse-Fehler und werden mit dem richtigen Dialekt einwandfrei formatiert. Platzhalter wie ?, :name, $1 und @name werden in jedem Dialekt erkannt und wortgetreu durchgereicht, damit SQL, das direkt aus einem Query-Log kopiert wurde, nicht verstümmelt wird.
Zwei ehrliche Grenzen. Der Formatierer prüft nur, ob der Text grammatikalisch gültiges SQL für den gewählten Dialekt ist: Er weiß nichts über Ihre Tabellen, formatiert also auch eine Abfrage, die auf eine nicht existierende Spalte verweist, und er führt niemals etwas aus. Lässt sich der Text nicht parsen, sagt er mit Zeile und Spalte, wo der Parser aufgegeben hat, statt ein halb formatiertes Durcheinander zurückzugeben. Der Datenschutz ist der Grund, hier zu formatieren und nicht auf irgendeiner beliebigen Website: Produktivabfragen enthalten Tabellennamen, Geschäftslogik und mitunter personenbezogene Daten. Die Bibliothek (sql-formatter, MIT, ausgeliefert von vai.la und erst beim ersten Formatieren heruntergeladen) läuft in Ihrem Browser.
Nein. Die Abfrage wird von JavaScript auf Ihrem eigenen Gerät geparst und neu ausgegeben — nichts wird hochgeladen, protokolliert oder gespeichert. Das ist wichtig, denn echte Abfragen legen Ihr Schema, Ihre Geschäftsregeln und manchmal personenbezogene Daten in Literalen offen. Nach dem ersten Formatieren können Sie die Internetverbindung trennen, und es funktioniert weiter.
Den, den Ihre Datenbank spricht. Standard SQL deckt die meisten gewöhnlichen Abfragen ab, aber datenbankspezifische Syntax braucht den passenden Dialekt: [eckige Klammern] brauchen SQL Server (T-SQL), $$Dollar-Quoting$$ braucht PostgreSQL. Ein Parse-Fehler bei gültigem SQL lässt sich meist durch den Wechsel des Dialekts beheben.
Nein. Es ändern sich nur Leerraum, Zeilenumbrüche und die Schreibweise der Schlüsselwörter. Bezeichner, Zeichenketten-Literale, Zahlen und Kommentare kommen exakt so zurück, wie sie eingegeben wurden — die formatierte Abfrage ist also gleichwertig zum Original.
Weil der Parser an der angezeigten Zeile und Spalte auf etwas gestoßen ist, das er nicht in die Grammatik einordnen konnte. Drei übliche Ursachen: ein Tippfehler wie ein fehlendes Komma, ein fehlendes Anführungszeichen oder eine fehlende Klammer; ein Fragment, das keine vollständige Anweisung ist; oder datenbankspezifische Syntax bei falsch gewähltem Dialekt.
Ja. Positionsbezogene (?), nummerierte ($1) und benannte (:name, @name) Platzhalter werden in jedem Dialekt erkannt und unverändert wieder ausgegeben — Sie können also direkt aus einem Query-Log oder der Debug-Ausgabe eines Frameworks einfügen.
Ja. Durch Semikolons getrennte Anweisungen werden nacheinander formatiert, mit einer Leerzeile dazwischen. Die Eingabe ist auf 300.000 Zeichen begrenzt, damit die Seite nie einfriert; darüber hinaus teilen Sie die Datei auf.
Vai.la verwandelt jede URL in einen Kurzlink mit Klick-Statistiken, QR-Code und Ihrem eigenen Biolink.
Vai.la übernimmt keine Verantwortung für die Nutzung der Tools oder für Entscheidungen, die auf ihren Ergebnissen basieren.