tigtools

Formatator SQL

Lipește o interogare, alege dialectul bazei de date și obține SQL curat, indentat consecvent. Nimic nu este trimis la un server.

Rulează în browser Fără înregistrare

Indentare

Cum se folosește

  1. Lipește una sau mai multe instrucțiuni SQL sau apasă „Încearcă un exemplu”.
  2. Alege dialectul bazei tale de date, astfel încât cuvintele-cheie, ghilimelele și operatorii să fie recunoscuți.
  3. Setează capitalizarea cuvintelor-cheie și indentarea. Interogarea formatată apare în dreapta pe măsură ce tastezi.
  4. Apasă Minifică pentru o versiune pe o singură linie, apoi copiază rezultatul sau descarcă-l ca fișier .sql.

Cum funcționează

Formatarea folosește biblioteca open-source sql-formatter. Împarte interogarea în tokenuri după regulile dialectului ales, plasează fiecare clauză majoră (SELECT, FROM, JOIN, WHERE, GROUP BY, ORDER BY…) pe propria linie, indentă listele de coloane și condițiile și aplică scrierea cu majuscule/minuscule aleasă pentru cuvintele cheie. Modifică spațiile albe și, dacă alegi, scrierea cu majuscule/minuscule a cuvintelor cheie; identificatorii, literalii de șir și comentariile sunt păstrate. Alegerea dialectului corect contează: de exemplu, backtick-urile delimitează numele în MySQL, parantezele drepte în SQL Server, iar $$ începe corpul unei funcții în PostgreSQL.

Formatorul este un instrument de aranjare, nu o bază de date. Nu verifică dacă tabelele sau coloanele există și nu validează întreaga gramatică, astfel că unele interogări SQL invalide sunt formatate fără erori semnalate. Când nu poate înțelege intrarea, de exemplu o paranteză neînchisă, raportează linia și coloana la care s-a oprit.

Minificarea funcționează diferit: păstrează fiecare token, reduce fiecare secvență de spații albe la un singur spațiu și elimină comentariile (indiciile de optimizare precum /*+ INDEX(t) */ și comentariile MySQL /*! … */ sunt păstrate, deoarece schimbă comportamentul). Șirurile, identificatorii delimitați și corpurile delimitate cu $$ sunt copiate neschimbate. Dacă un delimitator de șir sau un comentariu nu este închis, minificarea se oprește cu o eroare în loc să ghicească.

Exemple

Citirea unei interogări dintr-un log

Un jurnal de interogări lente afișează o linie de 400 de caractere. Cu dialectul MySQL și cuvintele cheie scrise cu majuscule, devine un bloc lizibil în care fiecare condiție JOIN și WHERE stă pe propria linie, iar indexul lipsă devine ușor de observat.

Stil consecvent pentru code review

O echipă formatează fiecare migrare folosind dialectul PostgreSQL, cuvinte-cheie cu minuscule și indentare de 4 spații înainte de commit, astfel încât diff-urile să arate doar modificările reale.

Integrarea SQL în cod

Minify transformă o interogare de raport comentată, pe mai multe linii, într-o singură linie, de exemplu SELECT id, name FROM users WHERE active = 1 ORDER BY name, gata de lipit într-un șir dintr-un script.

Întrebări frecvente

Ce baze de date sunt acceptate?

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 și Couchbase N1QL.

Formatarea va schimba ce face interogarea mea?

Nu ar trebui: se schimbă doar spațierea și, dacă este selectată, capitalizarea cuvintelor-cheie. Literele mari/mici ale cuvintelor-cheie nu contează în SQL. Totuși, verifică rezultatul generat înainte de a-l rula pe date de producție, mai ales pentru caracteristici de dialect neobișnuite.

De ce am primit „nu a putut fi format”?

Tokenizatorul a întâlnit ceva ce nu a putut încadra, adesea o paranteză sau o ghilimea neînchisă, sau sintaxă dintr-un alt dialect. Verifică linia și coloana din mesaj și asigură-te că dialectul selectat corespunde bazei tale de date.

Validează SQL-ul meu?

Nu. Nu este conectat la o bază de date și nu cunoaște schema ta. O interogare poate fi formatată și poate eșua totuși când o rulezi.

Confidențialitate

SQL-ul este formatat în browserul tău cu JavaScript. Nu este încărcat, stocat sau inclus în analize, iar instrumentul nu se conectează niciodată la o bază de date.