Slik bruker du det
- Lim inn én eller flere SQL-setninger, eller trykk på «Prøv et eksempel».
- Velg dialekten til databasen din, slik at nøkkelord, sitering og operatorer gjenkjennes.
- Angi store/små bokstaver for nøkkelord og innrykk. Den formaterte spørringen vises til høyre mens du skriver.
- Trykk på Minifiser for en enlinjeversjon, og kopier deretter resultatet eller last det ned som en .sql-fil.
Slik fungerer det
Formateringen bruker sql-formatter-biblioteket med åpen kildekode. Det deler spørringen opp i tokener etter reglene for dialekten du velger, setter hver større klausul (SELECT, FROM, JOIN, WHERE, GROUP BY, ORDER BY …) på egen linje, rykker inn kolonnelister og betingelser, og bruker valgt store/små bokstaver for nøkkelord. Den endrer mellomrom og, hvis du ber om det, store/små bokstaver i nøkkelord; identifikatorer, strengliteraler og kommentarer beholdes. Å velge riktig dialekt har betydning: for eksempel angir backticks navn i MySQL, hakeparenteser i SQL Server, og $$ starter en funksjonskropp i PostgreSQL.
Formatereren er et layoutverktøy, ikke en database. Den sjekker ikke om tabeller eller kolonner finnes, og validerer ikke hele grammatikken, så noe ugyldig SQL formateres uten advarsel. Når den ikke kan forstå inndata, for eksempel en ulukket parentes, rapporterer den linjen og kolonnen der den stoppet.
Minifisering fungerer annerledes: den beholder hvert token og slår bare sammen hver sekvens av mellomrom til ett enkelt mellomrom, og den fjerner kommentarer (optimaliseringshint som /*+ INDEX(t) */ og MySQL-kommentarer av typen /*! … */ beholdes, fordi de endrer atferd). Strenger, siterte identifikatorer og dollar-siterte kropper kopieres uendret. Hvis et anførselstegn eller en kommentar aldri lukkes, stopper minifisering med en feil i stedet for å gjette.
Eksempler
Lese en spørring fra en logg
En logg med langsomme spørringer viser én linje på 400 tegn. Med MySQL-dialekten og store bokstaver i nøkkelord blir den en lesbar blokk der hver JOIN- og WHERE-betingelse står på egen linje, noe som gjør den manglende indeksen lett å få øye på.
Konsekvent stil for kodegjennomgang
Et team formaterer hver migrering med PostgreSQL-dialekt, små bokstaver i nøkkelord og innrykk med 4 mellomrom før commit, slik at diffene bare viser reelle endringer.
Bygge inn SQL i kode
Minifiser gjør en kommentert, flerlinjet rapportspørring om til én linje, for eksempel SELECT id, name FROM users WHERE active = 1 ORDER BY name, klar til å lime inn i en streng i et skript.
Ofte stilte spørsmål
Hvilke databaser stø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 endre hva spørringen min gjør?
Det skal det ikke: bare mellomrom (inkludert linjeskift) og, hvis valgt, endring av store/små bokstaver i nøkkelord. Store eller små bokstaver i nøkkelord har ikke betydning i SQL. Likevel bør du gjennomgå generert resultat før du kjører det mot produksjonsdata, spesielt ved uvanlige dialektfunksjoner.
Hvorfor fikk jeg «kunne ikke formateres»?
Tokenisereren traff noe den ikke kunne plassere, ofte en uavsluttet parentes eller anførselstegn, eller syntaks fra en annen dialekt. Sjekk linjen og kolonnen i meldingen, og kontroller at valgt dialekt passer til databasen din.
Validerer verktøyet SQL-en min?
Nei. Verktøyet er ikke koblet til en database og kjenner ikke skjemaet ditt. En spørring kan bli formatert og likevel feile når du kjører den.
Personvern
SQL-en din formateres i nettleseren din med JavaScript. Den lastes ikke opp, lagres ikke og inkluderes ikke i statistikk, og verktøyet kobler aldri til en database.