tigtools

Formater SQL

Wklej zapytanie, wybierz dialekt swojej bazy danych i otrzymaj czytelny, równo wcięty SQL. Żadne dane nie są wysyłane na serwer.

Działa w przeglądarce Bez rejestracji

Wcięcie

Jak używać

  1. Wklej co najmniej jedną instrukcję SQL lub kliknij „Wypróbuj przykład”.
  2. Wybierz dialekt swojej bazy danych, aby narzędzie rozpoznawało jego słowa kluczowe, sposób zapisu cudzysłowów i operatory.
  3. Ustaw wielkość liter w słowach kluczowych i wcięcia. Sformatowane zapytanie pojawi się po prawej stronie podczas pisania.
  4. Kliknij „Minifikuj”, aby uzyskać wersję w jednym wierszu, a następnie skopiuj wynik lub pobierz go jako plik .sql.

Jak to działa

Formatowanie korzysta z biblioteki open source sql-formatter. Dzieli zapytanie na tokeny zgodnie z regułami wybranego dialektu, umieszcza każdą główną klauzulę (SELECT, FROM, JOIN, WHERE, GROUP BY, ORDER BY…) w osobnym wierszu, wcięciem oddziela listy kolumn i warunki oraz stosuje wybraną wielkość liter w słowach kluczowych. Zmienia białe znaki oraz — jeśli o to poprosisz — wielkość liter w słowach kluczowych; identyfikatory, literały tekstowe i komentarze pozostają bez zmian. Wybór właściwego dialektu ma znaczenie: na przykład w MySQL nazwy ujmuje się w odwrotne apostrofy, w SQL Server — w nawiasy kwadratowe, a w PostgreSQL $$ rozpoczyna ciało funkcji.

Formater służy do układania kodu, a nie do obsługi bazy danych. Nie sprawdza, czy tabele lub kolumny istnieją, ani nie weryfikuje całej składni, dlatego może sformatować niepoprawny SQL bez ostrzeżenia. Jeśli nie potrafi zinterpretować danych wejściowych, na przykład z powodu niedomkniętego nawiasu, wyświetla numer wiersza i kolumny, w których napotkał problem.

Minifikacja działa inaczej: zachowuje wszystkie tokeny, łączy jedynie każdy ciąg białych znaków w pojedynczą spację i usuwa komentarze (zachowywane są podpowiedzi optymalizatora, takie jak /*+ INDEX(t) */, oraz komentarze MySQL /*! … */, ponieważ wpływają na działanie zapytania). Ciągi tekstowe, identyfikatory w cudzysłowach i treści ujęte w cudzysłowy dolarowe są kopiowane bez zmian. Jeśli cudzysłów lub komentarz nie zostanie zamknięty, minifikacja zakończy się błędem zamiast zgadywać.

Przykłady

Odczytywanie zapytania z dziennika

W dzienniku wolnych zapytań widnieje jeden wiersz o długości 400 znaków. Po wybraniu dialektu MySQL i wielkich liter w słowach kluczowych zapytanie zmienia się w czytelny blok, w którym każda klauzula JOIN i warunek WHERE znajduje się w osobnym wierszu, dzięki czemu łatwo zauważyć brakujący indeks.

Spójny styl ułatwiający przegląd kodu

Przed zatwierdzeniem zmian zespół formatuje każdą migrację, wybierając dialekt PostgreSQL, małe litery w słowach kluczowych i wcięcia złożone z 4 spacji. Dzięki temu różnice w kodzie pokazują tylko rzeczywiste zmiany.

Osadzanie SQL w kodzie

Minifikacja zmienia wielowierszowe zapytanie raportowe z komentarzami w jeden wiersz, na przykład SELECT id, name FROM users WHERE active = 1 ORDER BY name, gotowy do wklejenia do ciągu znaków w skrypcie.

Często zadawane pytania

Jakie bazy danych są obsługiwane?

Standardowy SQL, 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.

Czy formatowanie zmieni działanie mojego zapytania?

Nie powinno: zmieniają się tylko białe znaki oraz — jeśli wybrano tę opcję — wielkość liter w słowach kluczowych. W SQL wielkość liter w słowach kluczowych nie ma znaczenia. Mimo to przed uruchomieniem zapytania na danych produkcyjnych sprawdź wygenerowany wynik, zwłaszcza jeśli korzystasz z nietypowych funkcji dialektu.

Dlaczego pojawił się komunikat „nie można sformatować”?

Tokenizer napotkał element, którego nie potrafił zinterpretować. Często przyczyną jest niedomknięty nawias lub cudzysłów albo składnia z innego dialektu. Sprawdź w komunikacie numer wiersza i kolumny oraz upewnij się, że wybrany dialekt odpowiada Twojej bazie danych.

Czy narzędzie weryfikuje mój SQL?

Nie. Narzędzie nie łączy się z bazą danych i nie zna jej schematu. Zapytanie może zostać sformatowane, a mimo to zakończyć się błędem po uruchomieniu.

Prywatność

SQL jest formatowany w przeglądarce za pomocą JavaScript. Nie jest przesyłany ani przechowywany i nie trafia do danych analitycznych. Narzędzie nigdy nie łączy się z bazą danych.