Formater SQL
Wklej jednolinijkową instrukcję SQL skopiowaną z loga albo ORM-a, a formater rozbije ją na wcięte klauzule ze spójną wielkością liter słów kluczowych, nowymi liniami przed SELECT, FROM, WHERE, GROUP BY oraz wyrównanymi kolumnami w projekcji. Obsługuje dialekty MySQL, PostgreSQL, SQL Server, Oracle, SQLite i BigQuery, każdy ma nieco inne słowa kluczowe i słowa zarezerwowane.
Jak działa formatowanie
-
1
Wklej swój SQL
Jednolinijkowy blok, zminifikowane wyjście z Hibernate, cokolwiek. Wiele instrukcji oddzielonych `;` jest formatowanych w całości.
-
2
Wybierz dialekt i styl
Dialekt steruje listą słów kluczowych; styl steruje rozmieszczeniem przecinków (na początku lub na końcu), szerokością wcięcia i wielkością liter słów kluczowych.
-
3
Tokeny są parsowane, a nie zamieniane regexem
Tokenizer poprawnie obsługuje ciągi, komentarze, nawiasy i podzapytania. Literały tekstowe są zachowane dosłownie.
-
4
Skopiuj sformatowane wyjście
Zwalidowany SQL: ta sama semantyka, czystszy układ.
Przed i po
Przed:
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;
Po (przecinek na początku, słowa kluczowe wielkimi literami, wcięcie 2 spacje):
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;
Wybory stylu, które mają znaczenie
- Wielkie vs małe litery słów kluczowych. WIELKIE litery są tradycyjne i łatwe do skanowania. Małe litery wyglądają czyściej w nowoczesnych edytorach z podświetlaniem składni.
- Przecinki na początku vs na końcu. Na początku (
, col) ułatwia zakomentowanie pojedynczej kolumny. Na końcu (col,) czyta się naturalniej w tekście. - Rozmieszczenie przecinków w
GROUP BY. Często po jednym na linię dla długich klauzul, w jednej linii dla krótkich. - Wcięcie JOIN.
ONw kolejnej linii (wcięcie wiszące) vs w tej samej linii. Długie warunki zyskują na wcięciu wiszącym. - Podzapytania. Wcinaj całe podzapytanie, nie tylko otwierający nawias.
Pułapki specyficzne dla dialektu
- Apostrofy odwrotne MySQL vs podwójne cudzysłowy PostgreSQL dla identyfikatorów.
- CTE z
WITH, MS SQL wymaga;przedWITH; formater to obsługuje. - Funkcje okienkowe, długie klauzule
OVER (...)zyskują na zawijanych w liniePARTITION BYiORDER BY. - BigQuery ma
ARRAY_AGG,STRUCTi przyrostki tabel (*_yyyymmdd), których tokenizer nie może rozbić. - Oracle ma składnię złączeń zewnętrznych
(+), formater ją zachowuje, ale oznacza jako przestarzałą.
Czego formater nie robi
- Naprawianie błędów, niepoprawny JOIN pozostaje niepoprawny.
- Rozwijanie
SELECT *, listy kolumn nie są wnioskowane ze schematu. - Optymalizacja zapytań, tylko układ, nie plany wykonania.
- Przepisywanie podzapytań na CTE, to inna sprawa.
Najczęściej zadawane pytania
Nie, jest czysto kosmetyczny. Spacje, nowe linie i rozmieszczenie przecinków się przesuwają, ale słowa kluczowe, operatory, literały i identyfikatory są zachowane dokładnie.
Obsługiwane, CREATE TABLE, ALTER, CREATE PROCEDURE, wyzwalacze. Formater radzi sobie z konstrukcjami blokowymi (BEGIN ... END) i kontynuacjami linii wewnątrz procedur.
Nie powinno, jeśli tak się dzieje, to najpewniej niezgodność dialektu. Spróbuj przełączyć dialekt. Zgłaszaj uporczywe awarie; traktujemy je jako błędy.
Flink SQL i Cassandra CQL wyglądają podobnie, ale mają słowa kluczowe specyficzne dla dialektu, które popularne formatery przekręcają. Używaj z ostrożnością i sprawdź, czy wynik się uruchamia.
Powiązane narzędzia
Tabela ASCII
Pełna tabela ASCII od 0 do 127 z zapisem dziesiętnym, szesnastkowym, ósemkowym i binarnym oraz notacją numerycznych odwołań HTML, w tym kodami sterującymi NUL, LF i DEL.
Referencja znaków HTML
Przeszukiwalna lista encji HTML wraz z ich kodami nazwanymi i liczbowymi oraz kopiowaniem jednym kliknięciem specjalnych znaków i symboli.
Skróty klawiaturowe
Wyszukuj udokumentowane skróty domyślne VS Code, Chrome i Bash z GNU Readline w macOS, Windows i Linux.
Formatowanie HTML
Formatuj HTML lokalnie w przeglądarce, używając wcięć dwóch lub czterech spacji. HTML nie jest wysyłany ani walidowany.
Podgląd Markdown
Pisz w Markdown i obserwuj, jak wyrenderowany HTML aktualizuje się na żywo. Składnia w stylu GitHub z tabelami, listami zadań, ogrodzonymi blokami kodu i automatycznymi odnośnikami.
Formater JavaScript
Formatuj JavaScript, JSX, TypeScript i JSON z konfigurowalnym wcięciem, stylem cudzysłowów, średnikami i przecinkami końcowymi.
Narzędzie jest dostępne w innych językach
- SQLフォーマッター [JA]
- SQL-formaterare [SV]
- SQL-formatter [NL]
- تنسيق SQL [AR]
- SQL 포매터 [KO]
- Format SQL [ID]
- Formatador SQL [PT]
- SQL-Formatter [DE]
- Formateador SQL [ES]
- รูปแบบ SQL [TH]
- Định dạng SQL [VI]
- Formateur SQL [FR]
- Форматтер SQL [RU]
- SQL Biçimlendirici [TR]
- SQL 格式化器 [ZH]
- SQL Formatter [EN]
- Formatter SQL [IT]