Sådan bruger du det
- Indsæt en eller flere SQL-sætninger, eller tryk på “Prøv et eksempel”.
- Vælg dialekten for din database, så dens nøgleord, quoting og operatorer genkendes.
- Indstil store/små bogstaver for nøgleord og indrykning. Den formaterede forespørgsel vises til højre, mens du skriver.
- Tryk på Minificér for at få en enkeltlinjet version, og kopier derefter resultatet, eller download det som en .sql-fil.
Sådan fungerer det
Formatering bruger open source-biblioteket sql-formatter. Det opdeler forespørgslen i tokens efter reglerne for den valgte dialekt, sætter hver større klausul (SELECT, FROM, JOIN, WHERE, GROUP BY, ORDER BY …) på egen linje, indrykker kolonnelister og betingelser og anvender den valgte store/små bogstavstil for nøgleord. Det ændrer mellemrum og, hvis du ønsker det, store/små bogstaver i nøgleord; identifikatorer, strengliteraler og kommentarer bevares. Valget af dialekt har betydning: For eksempel bruges backticks til at afgrænse navne i MySQL, firkantede parenteser i SQL Server, og $$ starter en funktionskrop i PostgreSQL.
Formateringsværktøjet er et layoutværktøj, ikke en database. Det kontrollerer ikke, om tabeller eller kolonner findes, og validerer ikke hele grammatikken, så noget ugyldig SQL kan blive formateret uden fejlmelding. Når det ikke kan forstå inputtet, for eksempel ved en uafsluttet parentes, rapporterer det linjen og kolonnen, hvor det stoppede.
Minificering fungerer anderledes: Det bevarer hvert token og reducerer kun hver sekvens af mellemrum til ét enkelt mellemrum og fjerner kommentarer (optimizer hints som /*+ INDEX(t) */ og MySQL-kommentarer /*! … */ bevares, fordi de ændrer adfærden). Strenge, afgrænsede identifikatorer og dollar-citerede kroppe kopieres uændret. Hvis et anførselstegn eller en kommentar aldrig lukkes, stopper minificering med en fejl i stedet for at gætte.
Eksempler
Læsning af en forespørgsel fra en log
En log over langsomme forespørgsler viser én linje på 400 tegn. Med MySQL-dialekten og store bogstaver i nøgleord bliver den til en læsbar blok, hvor hver JOIN- og WHERE-betingelse står på egen linje, hvilket gør det manglende indeks let at få øje på.
Ensartet stil til kodereview
Et team formaterer hver migration med PostgreSQL-dialekt, små bogstaver i nøgleord og indrykning med 4 mellemrum inden commit, så diffs kun viser reelle ændringer.
Indlejring af SQL i kode
Minificering omdanner en kommenteret rapportforespørgsel over flere linjer til én linje som SELECT id, name FROM users WHERE active = 1 ORDER BY name, klar til at indsætte i en streng i et script.
Ofte stillede spørgsmål
Hvilke databaser understøttes?
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 og Couchbase N1QL.
Vil formatering ændre, hvad min forespørgsel gør?
Det bør det ikke gøre: kun whitespace og, hvis valgt, ændring af nøgleords store/små bogstaver. Store/små bogstaver i nøgleord har ikke betydning i SQL. Gennemgå alligevel det genererede output, før du kører det mod produktionsdata, især ved usædvanlige dialektfunktioner.
Hvorfor fik jeg “kunne ikke formateres”?
Tokenizeren stødte på noget, den ikke kunne placere, ofte en uafsluttet parentes eller et anførselstegn eller syntaks fra en anden dialekt. Tjek linje og kolonne i meddelelsen, og sørg for, at den valgte dialekt passer til din database.
Validerer den min SQL?
Nej. Den er ikke forbundet til en database og kender ikke dit skema. En forespørgsel kan være formateret og alligevel fejle, når du kører den.
Privatliv
Din SQL formateres i din browser med JavaScript. Den uploades ikke, gemmes ikke og indgår ikke i analyse, og værktøjet opretter aldrig forbindelse til en database.