tigtools

Formattatore SQL

Incolla una query, scegli il dialetto del tuo database e ottieni SQL ordinato e con rientri coerenti. I dati non vengono inviati a un server.

Funziona nel browser Nessuna registrazione

Rientro

Come si usa

  1. Incolla una o più istruzioni SQL oppure premi «Prova un esempio».
  2. Scegli il dialetto del tuo database, così vengono riconosciuti le parole chiave, le virgolette e gli operatori corretti.
  3. Imposta la forma delle parole chiave e il rientro. La query formattata appare a destra mentre scrivi.
  4. Premi Minifica per ottenere una versione su un'unica riga, quindi copia il risultato o scaricalo come file .sql.

Come funziona

La formattazione usa la libreria open source sql-formatter. La libreria suddivide la query in token secondo le regole del dialetto scelto, dispone ogni clausola principale (SELECT, FROM, JOIN, WHERE, GROUP BY, ORDER BY…) su una riga separata, applica il rientro agli elenchi di colonne e alle condizioni e imposta le maiuscole o minuscole delle parole chiave. Modifica gli spazi e, se richiesto, le maiuscole o minuscole delle parole chiave; identificatori, stringhe letterali e commenti restano invariati. È importante scegliere il dialetto corretto: per esempio, in MySQL i nomi sono racchiusi tra backtick, in SQL Server tra parentesi quadre e in PostgreSQL $$ avvia il corpo di una funzione.

Il formatter serve a organizzare il codice, non è un database. Non verifica che le tabelle o le colonne esistano e non convalida l'intera grammatica, quindi può formattare senza segnalazioni anche SQL non valido. Se non riesce a interpretare l'input, per esempio a causa di una parentesi non chiusa, indica la riga e la colonna in cui si è fermato.

La minificazione funziona in modo diverso: conserva tutti i token, riduce ogni sequenza di spazi bianchi a un singolo spazio e rimuove i commenti (mantiene gli hint di ottimizzazione come /*+ INDEX(t) */ e i commenti MySQL /*! … */, perché modificano il comportamento). Le stringhe, gli identificatori tra virgolette e i corpi racchiusi tra dollar quote vengono copiati senza modifiche. Se una virgoletta o un commento non viene mai chiuso, la minificazione si interrompe con un errore invece di fare supposizioni.

Esempi

Leggere una query da un log

Un log di query lente mostra una riga di 400 caratteri. Con il dialetto MySQL e le parole chiave in maiuscolo, diventa un blocco leggibile in cui ogni condizione JOIN e WHERE è su una riga separata: così è facile individuare l'indice mancante.

Stile coerente per la revisione del codice

Prima di inviare le modifiche, un team formatta ogni migrazione usando il dialetto PostgreSQL, le parole chiave in minuscolo e un rientro di 4 spazi, così le differenze mostrano solo le modifiche effettive.

Incorporare SQL nel codice

La minificazione trasforma una query di report su più righe e con commenti in un'unica riga, ad esempio SELECT id, name FROM users WHERE active = 1 ORDER BY name, pronta da inserire in una stringa di uno script.

Domande frequenti

Quali database sono supportati?

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

La formattazione cambia il risultato della query?

Non dovrebbe: cambiano solo gli spazi e, se selezionata, la forma delle parole chiave. In SQL, maiuscole e minuscole nelle parole chiave non fanno differenza. È comunque consigliabile controllare l'output generato prima di eseguirlo su dati di produzione, soprattutto in presenza di funzionalità insolite del dialetto.

Perché compare il messaggio «impossibile formattare»?

Il tokenizer ha incontrato un elemento che non è riuscito a interpretare, spesso una parentesi o una virgoletta non chiusa, oppure una sintassi appartenente a un altro dialetto. Controlla la riga e la colonna indicate nel messaggio e verifica che il dialetto selezionato corrisponda al tuo database.

Convalida il mio SQL?

No. Non è connesso a un database e non conosce il tuo schema. Una query può essere formattata correttamente e comunque non funzionare quando la esegui.

Privacy

Il tuo SQL viene formattato nel browser con JavaScript. Non viene caricato, archiviato né incluso nelle statistiche; lo strumento non si connette mai a un database.