Formattatore SQL

Trasforma un SQL su una riga sola e illeggibile in una query indentata come si deve — 18 dialetti, tutto nel tuo browser.

Come si usa

  1. Incolla il tuo SQL nel campo di input: una query, una stored procedure o un intero file di migrazione. «Carica un esempio disordinato» riempie il campo con una query volutamente brutta.
  2. Scegli il dialetto che parla il tuo database — PostgreSQL, MySQL, SQL Server e altri quindici accettano sintassi che lo Standard SQL rifiuta — poi scegli il formato delle parole chiave e l'indentazione che usi.
  3. Clicca su «Formatta SQL», poi copia il risultato o scarica il file .sql — la query non viene mai caricata.

Informazioni su questo strumento

Raramente l'SQL arriva leggibile: una riga infinita sputata da un ORM, tutte le parole chiave in minuscolo in un log di query lente, l'indentazione distrutta da un client di chat. Riformattarlo a mano prima ancora di poterlo leggere fa perdere dieci minuti — e la lettura è proprio dove si nascondono i bug: una condizione di join diventata in silenzio un filtro, un OR che lega più largo di quanto pensasse chi l'ha scritto, una subquery annidata tre livelli. Incollalo qui e torna con una clausola per riga, annidamento allineato e parole chiave nel formato che preferisci.

Il lavoro è svolto da un vero parser, non da un mucchio di espressioni regolari. La query viene tokenizzata, interpretata come un albero di clausole e ristampata: ecco perché i commenti restano sulla riga in cui erano scritti, i letterali stringa sopravvivono intatti anche quando contengono parole come SELECT o FROM, e una funzione finestra mantiene il suo blocco OVER (PARTITION BY … ORDER BY …) correttamente annidato. Sono disponibili diciotto dialetti — 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 e N1QL — e la scelta non è un ornamento: il dollar-quoting di PostgreSQL ($$body$$) e le parentesi quadre del T-SQL ([dbo].[table]) sono errori di parsing con lo Standard SQL e si formattano perfettamente con il dialetto giusto. I segnaposto come ?, :name, $1 e @name sono riconosciuti in tutti i dialetti e restituiti così come sono, quindi l'SQL copiato direttamente da un log di query non viene rovinato.

Due limiti dichiarati apertamente. Il formattatore verifica soltanto che il testo sia SQL grammaticalmente valido per il dialetto scelto: non sa nulla delle tue tabelle, quindi formatterà anche una query che fa riferimento a una colonna inesistente, e non esegue mai niente. Quando il testo non è analizzabile indica dove il parser si è fermato, con riga e colonna, invece di restituire un pasticcio formattato a metà. La privacy è il motivo per formattare qui invece che su un sito qualsiasi: le query di produzione contengono nomi di tabelle, logica di business e a volte dati personali. La libreria (sql-formatter, MIT, servita da vai.la e scaricata solo alla tua prima formattazione) gira dentro il tuo browser.

Domande frequenti

Il mio SQL esce dal mio browser?

No. La query viene analizzata e ristampata da JavaScript sul tuo dispositivo — niente viene caricato, registrato o memorizzato. È importante, perché le query reali espongono il tuo schema, le tue regole di business e a volte dati personali contenuti nei letterali. Dopo la prima formattazione puoi disconnetterti da internet e continua a funzionare.

Quale dialetto devo scegliere?

Quello che parla il tuo database. Lo Standard SQL copre la maggior parte delle query ordinarie, ma la sintassi specifica di un database richiede il dialetto corrispondente: le [parentesi quadre] richiedono SQL Server (T-SQL), il $$dollar quoting$$ richiede PostgreSQL. Un errore di parsing su SQL valido di solito si risolve cambiando dialetto.

La formattazione può cambiare ciò che fa la mia query?

No. Cambiano solo gli spazi, le interruzioni di riga e il maiuscolo o minuscolo delle parole chiave. Identificatori, letterali stringa, numeri e commenti tornano esattamente come li hai scritti, quindi la query formattata è equivalente all'originale.

Perché dice che il mio SQL non è stato analizzato?

Perché il parser ha incontrato qualcosa che non rientra nella grammatica, alla riga e alla colonna indicate. Tre cause tipiche: un errore di battitura come una virgola, un apice o una parentesi mancanti; un frammento che non è un'istruzione completa; oppure sintassi specifica di un database con il dialetto sbagliato selezionato.

Gestisce i segnaposto di un ORM o di una prepared statement?

Sì. I segnaposto posizionali (?), numerati ($1) e con nome (:name, @name) sono riconosciuti in tutti i dialetti e ristampati invariati, così puoi incollare direttamente da un log di query o dall'output di debug di un framework.

Posso formattare un intero file di migrazione?

Sì. Le istruzioni separate da punto e virgola vengono formattate una dopo l'altra, con una riga vuota tra loro. L'input è limitato a 300.000 caratteri perché la pagina non si blocchi mai; oltre quella soglia, dividi il file.

Strumenti correlati

Link lunghi? Accorciali gratis

Vai.la trasforma qualsiasi URL in un link breve con statistiche dei clic, QR Code e il tuo biolink personale.

Vai.la non è responsabile dell'uso degli strumenti né delle decisioni prese in base ai loro risultati.