Utilia

Formattatore SQL

Formatta query SQL per PostgreSQL, MySQL, SQL Server, Oracle, BigQuery, Snowflake e altri, con maiuscole e indentazione a scelta, nel tuo browser.

Come formattare una query SQL

  1. Incolla una o più query, oppure premi Apri un file per caricare un file .sql (fino a 10 MB).
  2. Scegli il Dialetto del tuo database, per esempio PostgreSQL, MySQL o SQL Server (T-SQL).
  3. Scegli come scrivere le Parole chiave (MAIUSCOLO, minuscolo o Come scritte) e l’Indentazione.
  4. Spunta Nessuno spazio intorno agli operatori se preferisci a=b+1 a a = b + 1.
  5. Premi Formatta SQL, poi copia o scarica il risultato. Se cambi un’opzione, la query viene riformattata.

La query viene solo riformattata come testo. Non viene mai eseguita né inviata a un database o a un server.

Cosa fa il formattatore

Lo strumento usa la libreria open source sql-formatter. Divide ogni istruzione in clausole e mette ogni parola chiave di clausola (SELECT, FROM, WHERE, GROUP BY, ORDER BY…) su una riga propria, con il contenuto della clausola indentato sotto. Le colonne di un elenco SELECT vanno una per riga, le condizioni AND e OR iniziano una nuova riga, e le sottoquery e le espressioni CASE sono indentate in base al livello di annidamento. Le espressioni brevi tra parentesi restano su una sola riga. Più istruzioni separate da punto e virgola vengono distanziate da una riga vuota.

Cambiano solo gli spazi e le maiuscole/minuscole. Letterali stringa, identificatori tra virgolette e commenti restano esattamente come sono, quindi la query formattata restituisce lo stesso risultato dell’originale.

Perché il dialetto è importante

I database SQL condividono il linguaggio di base ma differiscono nei dettagli, e un formattatore deve conoscerli per leggere correttamente la query:

  • gli identificatori si racchiudono tra "virgolette doppie" in SQL standard e PostgreSQL, tra `backtick` in MySQL, MariaDB e BigQuery e tra [parentesi quadre] in SQL Server;
  • operatori come ->> e i cast :: di PostgreSQL, o l’accesso ai percorsi con : di Snowflake, esistono solo in alcuni dialetti;
  • i segnaposto dei parametri cambiano: ?, $1, :nome o @nome;
  • ogni dialetto ha le proprie parole riservate e funzioni, su cui agisce l’opzione Parole chiave.

Se ottieni “Impossibile analizzare la query”, controlla prima che il dialetto selezionato corrisponda al tuo database. L’errore mostra la riga e la colonna in cui l’analisi si è fermata. SQL standard è la scelta più restrittiva: quando puoi, scegli il database che usi davvero.

Maiuscole e consigli di stile

Le parole chiave in maiuscolo restano la convenzione più diffusa, perché a colpo d’occhio distinguono il linguaggio dai nomi di tabelle e colonne. Il minuscolo è apprezzato nei team che lo trovano più leggibile, e Come scritte lascia intatta la tua scelta. I nomi di tabelle, colonne e funzioni non vengono mai modificati: solo le parole chiave riservate seguono l’opzione. Nei file lunghi, una formattazione coerente rende anche molto più facile rivedere le differenze tra una versione e l’altra.

Domande frequenti

Quali dialetti sono supportati?

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

Lo strumento controlla che la mia query sia valida?

No. Controlla che la query sia leggibile nel dialetto scelto, ma non che tabelle o colonne esistano né che la query possa essere eseguita. Solo il tuo database può confermarlo.

Può formattare le stored procedure?

In parte. Le istruzioni all’interno delle procedure vengono formattate, ma i blocchi procedurali (BEGIN … END, cicli, DECLARE) sono impaginati in modo più semplice rispetto a un IDE dedicato.

La mia query viene inviata a un server?

No. La formattazione avviene nel tuo browser, quindi le query che contengono nomi di tabelle o dati restano sul tuo computer.

Perché il mio commento è finito in un altro punto?

I commenti vengono mantenuti, ma un commento a fine riga può spostarsi insieme all’elemento che lo precede quando quell’elemento va a capo.