Formatter SQL
Incolla un’istruzione SQL su una sola riga copiata da un log o da un ORM, e il formatter la suddivide in clausole indentate con una maiuscola coerente per le parole chiave, nuove righe prima di SELECT, FROM, WHERE, GROUP BY, e colonne allineate nella proiezione. Supporta i dialetti MySQL, PostgreSQL, SQL Server, Oracle, SQLite e BigQuery, ognuno ha parole chiave e riservate leggermente diverse.
Come funziona la formattazione
-
1
Incolla il tuo SQL
Blob su una sola riga, output minificato da Hibernate, qualunque cosa. Più istruzioni separate da `;` vengono tutte formattate.
-
2
Scegli dialetto e stile
Il dialetto controlla l'elenco delle parole chiave; lo stile controlla la posizione delle virgole (iniziale vs finale), la larghezza dell'indentazione e le parole chiave in maiuscolo/minuscolo.
-
3
I token vengono analizzati, non sostituiti tramite regex
Un tokenizer gestisce correttamente stringhe, commenti, parentesi e sottoquery. Le stringhe letterali vengono preservate letteralmente.
-
4
Copia l'output formattato
SQL convalidato, stessa semantica, layout più pulito.
Prima e dopo
Prima:
SELECT u.id,u.name,COUNT(o.id) AS orders FROM users u LEFT JOIN orders o ON o.user_id=u.id WHERE u.created_at>='2024-01-01' GROUP BY u.id,u.name HAVING COUNT(o.id)>5 ORDER BY orders DESC LIMIT 50;
Dopo (virgola iniziale, parole chiave maiuscole, indentazione di 2 spazi):
SELECT
u.id
, u.name
, COUNT(o.id) AS orders
FROM users u
LEFT JOIN orders o
ON o.user_id = u.id
WHERE u.created_at >= '2024-01-01'
GROUP BY u.id, u.name
HAVING COUNT(o.id) > 5
ORDER BY orders DESC
LIMIT 50;
Scelte di stile che contano
- Parole chiave maiuscole vs minuscole. MAIUSCOLE è tradizionale e facilmente leggibile. Minuscole è più pulita nei moderni editor di codice con evidenziazione della sintassi.
- Virgole iniziali vs finali. Iniziali (
, col) rendono più facile commentare una singola colonna. Finali (col,) si leggono più naturalmente nel testo. - Posizione delle virgole in
GROUP BY. Spesso una per riga per clausole lunghe, inline per quelle brevi. - Indentazione JOIN.
ONsulla riga successiva (indentazione sospesa) vs sulla stessa riga. Condizioni lunghe beneficiano dell’indentazione sospesa. - Sottoquery. Indenta l’intera sottoquery, non solo la parentesi di apertura.
Problemi specifici del dialetto
- Backticks MySQL vs doppi apici PostgreSQL per identificatori.
- CTE
WITH, MS SQL ha un requisito di;prima diWITH; il formatter lo gestisce. - Funzioni di finestra, lunghe clausole
OVER (...)beneficiano diPARTITION BYeORDER BYa capo. - BigQuery ha
ARRAY_AGG,STRUCTe suffissi di tabella (*_yyyymmdd) che il tokenizer non deve interrompere. - Oracle ha la sintassi di outer join
(+), il formatter la preserva ma la segnala come legacy.
Cosa non fa il formatter
- Correggere bug, un JOIN non valido rimane non valido.
- Espandere
SELECT *, le liste di colonne non vengono dedotte dallo schema. - Ottimizzare le query, solo layout, non piani di esecuzione.
- Riscrivere sottoquery come CTE, una preoccupazione diversa.
Domande frequenti
No, è puramente cosmetico. Gli spazi bianchi, le nuove righe e la posizione delle virgole si spostano, ma parole chiave, operatori, letterali e identificatori vengono preservati esattamente.
Supportato, CREATE TABLE, ALTER, CREATE PROCEDURE, trigger. Il formatter gestisce le strutture a blocchi (BEGIN ... END) e le continuazioni di riga all’interno delle procedure.
Non dovrebbe, se lo fa, è probabile che ci sia un disallineamento del dialetto. Prova a cambiare dialetto. Si prega di segnalare i fallimenti persistenti; li trattiamo come bug.
Flink SQL e Cassandra CQL sembrano simili ma hanno parole chiave specifiche del dialetto che i formatter mainstream rovinano. Usa con cautela e verifica che l’output funzioni.
Strumenti correlati
Riferimento Tabella ASCII
Tabella ASCII completa da 0 a 127 con decimale, esadecimale, ottale, binario e riferimento numerico HTML per ogni carattere, inclusi i codici di controllo come NUL, LF e DEL.
Riferimento ai caratteri HTML
Elenco ricercabile delle entità HTML, dei loro codici nominati e numerici, e copia con un clic per caratteri e simboli speciali.
Generatore di lettere casuali
Genera lettere A-Z casuali. Scegli la quantità, usa maiuscole, minuscole o un mix, e applica il risultato a giochi, spunti o attività in classe.
Riferimento scorciatoie da tastiera
Cerca le scorciatoie predefinite documentate di VS Code, Chrome e Bash con GNU Readline su macOS, Windows e Linux.
Creatore di diagrammi di flusso
Crea nel browser diagrammi di flusso visivi con cinque tipi di nodo, connessioni dirette e download SVG o PNG.
Convertitore di dimensioni file
Converti tra byte, KB, MB, GB, TB e le unità binarie IEC (KiB, MiB, GiB, TiB), combinando decimale e binario come preferisci.
Strumento disponibile in altre lingue
- Format SQL [ID]
- تنسيق SQL [AR]
- Formateur SQL [FR]
- รูปแบบ SQL [TH]
- SQLフォーマッター [JA]
- Formater SQL [PL]
- Định dạng SQL [VI]
- Formatador SQL [PT]
- SQL-formaterare [SV]
- Formateador SQL [ES]
- SQL-Formatter [DE]
- SQL 포매터 [KO]
- SQL-formatter [NL]
- SQL Biçimlendirici [TR]
- SQL 格式化器 [ZH]
- SQL Formatter [EN]
- Форматтер SQL [RU]