tigtools

SQL-formaterare

Klistra in en fråga, välj din databasdialekt och få ren, konsekvent indragen SQL. Ingenting skickas till en server.

Körs i din webbläsare Ingen registrering

Indrag

Så här använder du det

  1. Klistra in en eller flera SQL-satser, eller tryck på ”Prova ett exempel”.
  2. Välj dialekten för din databas så att dess nyckelord, citattecken och operatorer känns igen.
  3. Ställ in skiftläge för nyckelord och indrag. Den formaterade frågan visas till höger medan du skriver.
  4. Tryck på Minifiera för en enradig version, kopiera sedan resultatet eller ladda ner det som en .sql-fil.

Så fungerar det

Formateringen använder open source-biblioteket sql-formatter. Den delar upp frågan i token enligt reglerna för den dialekt du väljer, placerar varje större sats (SELECT, FROM, JOIN, WHERE, GROUP BY, ORDER BY …) på en egen rad, indenterar kolumnlistor och villkor samt tillämpar ditt val av skiftläge för nyckelord. Den ändrar blanksteg och, om du begär det, skiftläget för nyckelord; identifierare, stränglitteraler och kommentarer behålls. Att välja rätt dialekt är viktigt: till exempel avgränsas namn med backticks i MySQL, med hakparenteser i SQL Server, och $$ inleder en funktionskropp i PostgreSQL.

Formatteraren är ett layoutverktyg, inte en databas. Den kontrollerar inte att tabeller eller kolumner finns och validerar inte hela grammatiken, så en del ogiltig SQL formateras utan klagomål. När den inte kan tolka indata, till exempel en oavslutad parentes, rapporterar den raden och kolumnen där den stannade.

Minify fungerar annorlunda: den behåller varje token och slår endast ihop varje följd av blanksteg till ett enda mellanslag samt tar bort kommentarer (optimeringshint som /*+ INDEX(t) */ och MySQL-kommentarer som /*! … */ behålls, eftersom de ändrar beteendet). Strängar, citerade identifierare och dollarciterade kroppar kopieras oförändrade. Om ett citattecken eller en kommentar aldrig stängs avbryter Minify med ett fel i stället för att gissa.

Exempel

Läsa en fråga från en logg

En logg med långsamma frågor visar en 400 tecken lång rad. Med MySQL-dialekten och versala nyckelord blir den ett läsbart block där varje JOIN- och WHERE-villkor hamnar på en egen rad, vilket gör det saknade indexet lätt att upptäcka.

Konsekvent stil för kodgranskning

Ett team formaterar varje migrering med PostgreSQL-dialekt, små bokstäver för nyckelord och indrag på 4 blanksteg innan de checkar in, så att diffar bara visar verkliga ändringar.

Bädda in SQL i kod

Minifiering omvandlar en kommenterad, flerradig rapportfråga till en rad, till exempel SELECT id, name FROM users WHERE active = 1 ORDER BY name, redo att klistra in i en sträng i ett skript.

Vanliga frågor

Vilka databaser stöds?

Standard SQL, MySQL, MariaDB, PostgreSQL, SQLite, SQL Server (T-SQL), Oracle PL/SQL, BigQuery, Snowflake, Redshift, Spark SQL, Hive, Trino/Presto, DuckDB, IBM Db2, SingleStoreDB, TiDB och Couchbase N1QL.

Kommer formateringen att ändra vad min fråga gör?

Det borde det inte göra: endast blanktecken och, om det har valts, skiftläge för nyckelord ändras. Skiftläge för nyckelord spelar ingen roll i SQL. Granska ändå genererad utdata innan du kör den mot produktionsdata, särskilt för ovanliga dialektfunktioner.

Varför fick jag ”kunde inte formateras”?

Tokeniseraren stötte på något den inte kunde placera, ofta en oavslutad klammer eller citattecken, eller syntax från en annan dialekt. Kontrollera rad och kolumn i meddelandet och se till att den valda dialekten matchar din databas.

Validerar den min SQL?

Nej. Den är inte ansluten till någon databas och känner inte till ditt schema. En fråga kan formateras och ändå misslyckas när du kör den.

Integritet

Din SQL formateras i din webbläsare med JavaScript. Den laddas inte upp, lagras inte och ingår inte i analys, och verktyget ansluter aldrig till en databas.