Formattatore SQL — 11 dialetti, minificazione, evidenziazione
Trasforma SQL disordinato in query leggibili e indentate in modo coerente per PostgreSQL, MySQL, T-SQL, BigQuery e altri. Funziona nel browser.
Funziona interamente nel tuo browser. Il tuo SQL non viene mai inviato a un server, quindi i nomi degli schemi e i dati nelle query restano riservati. Sfoglia tutti gli strumenti gratuiti.
Hai trovato un problema o qualcosa che potrebbe andare meglio? Leggiamo ogni messaggio e sistemiamo le cose in fretta.
Questo formattatore SQL gratuito trasforma una query incollata da un log, da un ORM o da una migrazione su una sola riga in SQL leggibile: una clausola per riga, indentazione coerente e keyword con le maiuscole o minuscole che scegli. Scegli il dialetto del tuo database, così la sintassi come i cast :: e i corpi di funzione $$ di PostgreSQL, i backtick di MySQL, le [parentesi quadre] e le @variabili di T-SQL o le clausole QUALIFY di BigQuery e Snowflake viene capita invece che stravolta.
La formattazione cambia solo gli spazi e le maiuscole di keyword, tipi di dati e nomi di funzione. Stringhe letterali, identificatori tra virgolette e commenti restano esattamente come li hai scritti. Il formattatore deve analizzare il tuo SQL per impaginarlo, quindi l'SQL con template (blocchi {{ }} di dbt o Jinja) e alcune istruzioni specifiche di un fornitore possono non riuscire; in quel caso ti indica la riga e la colonna in cui si è fermato. Minimizza fa il contrario: una sola riga, commenti rimossi, hint dell'ottimizzatore come /*+ INDEX(...) */ mantenuti.
Come si usa
- Incolla una o più istruzioni SQL nella casella. È caricata una query di esempio, così puoi vedere subito il risultato.
- Scegli il dialetto usato dal tuo database. Conta soprattutto per virgolette, parametri e sintassi specifica del fornitore.
- Imposta maiuscole delle keyword, indentazione e numero di righe vuote tra le istruzioni. L'output si aggiorna mentre le modifichi.
- Passa a Minimizza se ti serve la query su una sola riga, per esempio dentro una configurazione JSON o un comando della shell.
- Copia il risultato o scaricalo come file .sql.
Domande frequenti
La formattazione cambia ciò che fa la mia query SQL?
No. Il formattatore cambia solo gli spazi e le maiuscole di keyword, tipi di dati e funzioni, che i database SQL trattano senza distinguere maiuscole e minuscole. Valori stringa, identificatori tra virgolette ("Column", `col`, [col]) e commenti vengono copiati senza modifiche, quindi la query restituisce gli stessi risultati. I nomi di tabelle e colonne non vengono cambiati, con un'eccezione: un nome senza virgolette che è anche una keyword nel dialetto scelto (per esempio un alias chiamato month) segue le maiuscole delle keyword. Nella maggior parte dei database i nomi senza virgolette non distinguono maiuscole e minuscole, quindi conta raramente, ma su Linux i nomi delle tabelle MySQL possono distinguerle; scegli Mantieni per lasciare il testo esattamente come l'hai scritto.
Quale dialetto SQL devo scegliere?
Quello usato dal tuo database. L'SQL standard va bene per semplici istruzioni SELECT, INSERT e UPDATE, ma non conosce i cast :: e i parametri $1 di PostgreSQL, gli identificatori con backtick e i commenti # di MySQL, le parentesi quadre, le @variabili e TOP di T-SQL, i blocchi PL/SQL di Oracle né la clausola QUALIFY di BigQuery e Snowflake. Se la formattazione fallisce con un errore di parsing, scegliere il dialetto giusto è la prima cosa da provare.
Perché il formattatore dice "Errore di parsing"?
Ha incontrato un token che non si aspettava per il dialetto scelto. Le cause più comuni sono un dialetto sbagliato, una parentesi o una virgoletta non chiusa, segnaposto di template come {{ ref("orders") }} di dbt o codice procedurale che il parser non gestisce. La riga di stato mostra riga e colonna e il riquadro sotto indica il carattere, il che di solito basta per trovare il problema.
Le keyword SQL vanno scritte in maiuscolo?
È una convenzione, non una regola. Le keyword in maiuscolo (SELECT, FROM, WHERE) fanno risaltare la struttura rispetto ai nomi di tabelle e colonne e sono lo stile più diffuso in documentazione e guide di stile. Molti team che usano dbt o editor moderni con evidenziazione della sintassi preferiscono il minuscolo. Scegline uno e applicalo ovunque; questo strumento converte in entrambe le direzioni oppure mantiene ciò che hai scritto.
Minificare l'SQL è sicuro?
Sì, per la query in sé: la minificazione compatta gli spazi e rimuove i commenti -- e /* */, senza mai toccare il contenuto delle stringhe. Gli hint dell'ottimizzatore (/*+ ... */) e i commenti di versione di MySQL (/*! ... */) vengono mantenuti perché cambiano il comportamento. Il prezzo è la leggibilità, quindi minifica solo per il trasporto (una configurazione JSON, una variabile d'ambiente, una riga di log) e tieni la versione formattata nel repository.
Il mio SQL viene inviato a un server?
No. La libreria di formattazione viene scaricata nel browser e gira lì. Nomi di tabelle e colonne ed eventuali dati nelle clausole WHERE non lasciano mai il tuo computer.
Differenze tra dialetti che mandano in crisi i formattatori
• Virgolette degli identificatori: l'SQL standard e PostgreSQL usano le "virgolette doppie", MySQL e MariaDB i `backtick`, SQL Server le [parentesi quadre]. Un formattatore impostato sul dialetto sbagliato può leggere un nome tra virgolette come una stringa o un operatore.
• Parametri: PostgreSQL usa $1, $2; MySQL e SQLite usano ?; SQL Server usa @name; Oracle usa :name. Vengono mantenuti esattamente come scritti.
• Cast e operatori: PostgreSQL ha value::type, gli operatori JSON -> e ->> e ILIKE. BigQuery e Snowflake hanno QUALIFY per filtrare le window function. Spark e Hive hanno LATERAL VIEW.
• Stringhe e corpi: i corpi delle funzioni PostgreSQL sono spesso racchiusi tra $$ ... $$ (dollar quoting) e le stringhe con escape usano E'...'. Tutto il contenuto viene trattato come un'unica stringa e lasciato com'è.
• Commenti: -- e /* */ funzionano ovunque; # apre un commento solo in MySQL e MariaDB. In T-SQL, #name è una tabella temporanea.
Uno stile SQL leggibile in cinque regole
Le guide di stile SQL pubblicate differiscono su dettagli come le virgole a inizio o fine riga, ma la maggior parte concorda su alcune regole di impaginazione, e questo formattatore le applica per impostazione predefinita:
• Una clausola principale per riga: SELECT, FROM, JOIN, WHERE, GROUP BY, HAVING, ORDER BY, LIMIT.
• Una colonna selezionata per riga, così i diff mostrano esattamente quale colonna è cambiata.
• Le condizioni dopo AND o OR su righe proprie dentro WHERE e ON.
• Sottoquery e corpi delle CTE indentati di un livello in più rispetto al blocco che li contiene.
• Una riga vuota tra le istruzioni di uno script, così ogni istruzione si legge come un'unità.
Ciò che un formattatore non può fare è scegliere buoni nomi. Usa alias di tabella che significhino qualcosa (orders o va bene, t1 no) e dai alle colonne calcolate un nome esplicito con AS.
Strumenti gratuiti correlati
- Formattatore JSON — Formatta, minifica e valida JSON, con gli errori di parsing localizzati per riga e colonna. Nel tuo browser, senza upload.
- Da JSON a TypeScript — Incolla un esempio JSON e ottieni interfacce TypeScript, uno schema Zod, un JSON Schema o tipi per Go, Python, Java, C#, Kotlin, Swift e Rust.
- Validatore YAML — Valida il YAML con riga e colonna esatte di ogni errore e individua gli sbagli che i parser accettano in silenzio: booleani yes/no, tabulazioni, chiavi duplicate.
- Tester regex — Prova un'espressione regolare su un testo di esempio con evidenziazione delle corrispondenze in tempo reale, gruppi di cattura e anteprima della sostituzione. Gratis, nel browser.
- Confronto testi (diff) — Confronta due versioni di un testo, di codice o di un file JSON e vedi esattamente quali righe, parole e caratteri sono cambiati.