Narzędzie do formatowania SQL
Enter SQL on the left to start formatting
Narzędzie do formatowania SQL GeekFormat, szybko upiększa i porządkuje nieuporządkowane zapytania SQL. Obsługuje 20 dialektów baz danych, takich jak MySQL, PostgreSQL, SQLite, SQL Server, Oracle itp., konfigurowalne opcje formatowania: wielkość liter słów kluczowych, styl wcięć, pozycja łamania wierszy operatorów, szerokość wyrażeń i oferuje 4 predefiniowane style jednym kliknięciem. Zawiera funkcje kompresji SQL i walidacji składni, obsługuje wysyłanie/pobieranie plików, udostępnianie przez URL, skróty klawiszowe, a także zapewnia podświetlanie składni i konfigurowalny układ panelu oparty na edytorze CodeMirror 6. Automatyczne formatowanie w czasie rzeczywistym po wprowadzeniu, całkowicie lokalne przetwarzanie w przeglądarce, instrukcje SQL nie są wysyłane na serwer.
Powiązane Rekomendacje
O formatowaniu SQL
Formatowanie SQL (SQL Formatting / SQL Beautification) odnosi się do dostosowywania białych znaków (podziałów wierszy, wcięć, spacji) i wielkości liter słów kluczowych w instrukcjach SQL za pomocą zautomatyzowanych narzędzi, aby miały spójną, dobrze czytelną strukturę układu. Jako deklaratywny język zapytań, złożone zapytanie często obejmuje wiele klauzul, takich jak JOIN wielu tabel, zagnieżdżone podzapytania, wiele warunków WHERE, grupowanie GROUP BY, filtrowanie HAVING, sortowanie ORDER BY itp., bez formatowania cała zawartość jest ściśnięta w jednym wierszu lub ma nieuporządkowane wcięcia, co poważnie wpływa na czytelność i efektywność konserwacji. Sformatowany SQL umieszcza każdą klauzulę w osobnym wierszu za pomocą odpowiednich podziałów wierszy i wcięć, hierarchia zagnieżdżenia jest wyrażana przez wcięcia, umożliwiając czytelnikowi szybkie zrozumienie struktury zapytania.
Dlaczego formatowanie SQL jest ważne? W środowiskach współpracy zespołowej różni programiści mają różne preferencje stylu kodowania — niektórzy lubią słowa kluczowe wielkimi literami, inni małymi; niektórzy używają wcięć 2 spacji, inni 4 spacji lub Tab; niektórzy umieszczają AND na początku wiersza, inni na końcu. Te różnice stylów same w sobie nie wpływają na wykonywanie SQL, ale podczas przeglądu kodu (Code Review) generują wiele bezsensownych diff, recenzent musi rozróżnić, które są rzeczywistymi zmianami logicznymi, a które tylko dostosowaniami formatowania. Ujednolicone zasady formatowania SQL i zautomatyzowane narzędzia do formatowania mogą wyeliminować spory o styl, pozwalając zespołowi skupić się na samej logice biznesowej.
Podstawowe zasady formatowania SQL zazwyczaj obejmują następujące aspekty: po pierwsze, wielkość liter słów kluczowych — słowa zastrzeżone SQL, takie jak SELECT, FROM, WHERE, JOIN, ON, GROUP BY, ORDER BY, HAVING, LIMIT, INSERT, UPDATE, DELETE, CREATE, ALTER, DROP, zazwyczaj są pisane wielkimi literami w celu odróżnienia od identyfikatorów (lub jednolicie małymi literami zgodnie z zasadami zespołu); po drugie, łamanie wierszy klauzul — każda główna klauzula (SELECT/FROM/WHERE/GROUP BY/ORDER BY itp.) w osobnym wierszu; po trzecie, wyrównywanie nazw kolumn — wiele nazw kolumn na liście SELECT zajmuje po jednym wierszu i jest wyrównanych pionowo; po czwarte, poziomy wcięć — podzapytania, warunki JOIN, zagnieżdżone wyrażenia CASE itp. odzwierciedlają hierarchię poprzez dodatkowe wcięcia; po piąte, pozycja operatorów — operatory logiczne, takie jak AND/OR, są jednolicie umieszczane na początku lub na końcu wiersza.
Formatowanie SQL różnych dialektów baz danych ma swoje szczególności. MySQL używa apostrofu odwróconego (`) do cytowania identyfikatorów, PostgreSQL używa podwójnych cudzysłowów ("), SQL Server używa nawiasów kwadratowych ([]); MySQL używa LIMIT do stronicowania, PostgreSQL obsługuje LIMIT/OFFSET, SQL Server używa TOP lub OFFSET/FETCH, Oracle używa ROWNUM; PostgreSQL ma operator konwersji typu ::, MySQL ma eskejpowanie apostrofem odwróconym, SQL Server ma identyfikatory w nawiasach kwadratowych. Te różnice dialektów wymagają, aby formatter był w stanie rozpoznać elementy składniowe specyficzne dla konkretnych baz danych, w przeciwnym razie może błędnie uznać specjalną składnię za błędy lub nieprawidłowo podzielić słowa kluczowe. To narzędzie jest zaimplementowane na podstawie biblioteki sql-formatter i zapewnia specjalistyczną obsługę składni dla 20 głównych dialektów SQL.
Kompresja SQL (SQL Minification) jest operacją odwrotną do formatowania i jest bardzo przydatna w niektórych scenariuszach. SQL drukowany w dziennikach aplikacji, SQL generowany przez frameworki ORM (takie jak Hibernate, MyBatis, Django ORM, SQLAlchemy), SQL przechwycony przez narzędzia do monitorowania wydajności baz danych, często ma skompresowany jednowierszowy format bez podziałów wierszy, co jest bardzo nieprzyjazne dla rozwiązywania problemów — najpierw trzeba go sformatować, aby przeczytać. Odwrotnie, gdy konieczne jest osadzenie SQL w ciągach kodu (takich jak łączenie ciągów w Java/Python/JavaScript), zapisywanie do plików konfiguracyjnych, przekazywanie przez parametry URL lub udostępnianie w narzędziach czatu, które nie obsługują tekstu wielowierszowego, kompresja do jednego wiersza może uniknąć problemów z formatowaniem spowodowanych podziałami wierszy i wcięciami.
Wybór odpowiedniego stylu formatowania wymaga uwzględnienia zasad zespołu i scenariuszy użycia. Styl ze słowami kluczowymi wielkimi literami jest tradycyjną konwencją SQL, w epoce druku słowa kluczowe wielkimi literami mogły sprawić, że SQL pisany odręcznie lub na maszynie do pisania był bardziej czytelny, dziś jest nadal używany przez wiele zespołów i organizacji. Styl ze słowami kluczowymi małymi literami staje się coraz bardziej popularny na nowoczesnych platformach kodowych, takich jak GitHub, ponieważ małe litery są wizualnie łagodniejsze, a przy podświetlaniu składni nowoczesnych edytorów nie trzeba już rozróżniać słów kluczowych po wielkości liter. Wcięcia 2 spacje są bardziej powszechne wśród programistów frontend, 4 spacje wśród programistów backend Java/C#. Wcięcia Tab pozwalają różnym programistom dostosować szerokość wyświetlania w edytorze. Umieszczanie operatorów logicznych AND/OR na początku wiersza ułatwia skanowanie każdego warunku podczas czytania długich list warunków; umieszczanie na końcu wiersza jest bardziej zgodne z nawykami czytania w języku angielskim.
Zasada implementacji narzędzi do formatowania SQL opiera się głównie na analizie leksykalnej (Tokenization) i analizie składniowej. Biblioteki, takie jak sql-formatter, najpierw rozkładają ciąg SQL na szereg tokenów (słowa kluczowe, identyfikatory, literały, operatory, znaki interpunkcyjne, komentarze itp.), a następnie przestawiają te tokeny zgodnie z regułami składniowymi (różne dialekty mają różne zestawy reguł), wstawiając podziały wierszy i wcięcia w odpowiednich miejscach. W przeciwieństwie do uniwersalnych formatterów kodu (takich jak Prettier), formatery SQL muszą rozumieć specyficzną strukturę składniową SQL (taką jak warunki JOIN...ON, wyrażenia CASE WHEN...END, zagnieżdżanie nawiasów podzapytań), aby poprawnie wstawiać wcięcia, a nie tylko polegać na nawiasach klamrowych lub dopasowywaniu nawiasów.
Podczas korzystania z narzędzi do formatowania SQL należy zwrócić uwagę na następujące kwestie: po pierwsze, formatowanie nie weryfikuje poprawności semantycznej SQL — składniowo poprawny, ale logicznie błędny SQL (taki jak błędnie napisany warunek JOIN, pominięty warunek WHERE) pozostanie błędny po formatowaniu, formatowanie poprawia tylko układ, nie poprawia logiki; po drugie, w rzadkich przypadkach granicznych narzędzie do formatowania może generować wyniki różniące się od oryginalnego SQL w scenariuszach wrażliwych na białe znaki (takich jak spacje w stałych ciągów, określone pozycje komentarzy), zaleca się wykonanie prostej weryfikacji po formatowaniu; po trzecie, nie wykonuj bezpośrednio w środowisku produkcyjnym SQL wygenerowanego przez narzędzie do formatowania bez testowania, szczególnie SQL z parametrami dynamicznymi; po czwarte, w przypadku SQL zawierającego dane wrażliwe (hasła, klucze, PII) używaj lokalnych narzędzi do formatowania (takich jak to narzędzie) zamiast narzędzi internetowych, aby uniknąć ryzyka wycieku danych.
Przypadki użycia
- Porządkowanie dużych bloków procedur składowanych SQL i złożonych zapytań z łączeniem tabel bez formatowania podczas przejmowania starych projektów w celu szybkiego zrozumienia logiki biznesowej
- Ujednolicenie stylu SQL przed przeglądem kodu zespołu, eliminowanie szumu diff spowodowanego osobistymi preferencjami formatowania, skupienie się na przeglądzie logicznym
- Skompresowany jednowierszowy SQL skopiowany z dzienników lub konsoli, sformatowanie w celu ułatwienia czytania i rozwiązywania problemów
- Podczas pisania dokumentów technicznych i blogów, osadzanie sformatowanych przykładów SQL w dokumencie w celu zwiększenia profesjonalizmu i czytelności
- Gdy SQL wyeksportowany z klientów baz danych ma nieuporządkowane formatowanie, ponowne sformatowanie do ujednoliconego stylu zespołu przed przesłaniem kodu
- Podczas przygotowywania do rozmów kwalifikacyjnych lub prezentacji technicznych, formatowanie demonstracyjnych instrukcji SQL do użycia w slajdach i objaśnieniach na tablicy
- Podczas rozwiązywania błędów SQL, formatowanie nieuporządkowanych zagnieżdżonych podzapytań w celu zlokalizowania problemów strukturalnych, takich jak niedopasowane nawiasy i brakujące słowa kluczowe
- Dzienniki SQL generowane przez frameworki ORM zazwyczaj mają skompresowany format bez podziałów wierszy, sformatowanie w celu ułatwienia analizy faktycznie wykonywanego zapytania
- Podczas tworzenia skryptów migracji danych, formatowanie instrukcji tworzenia tabeli i INSERT w celu poprawy łatwości konserwacji
- Ujednolicenie formatowania przed porównaniem różnic między wersjami SQL, aby uniknąć zakłócania przeglądu kodu przez czysto formatowe różnice
- Podczas nauki SQL, formatowanie przykładowych zapytań w celu zrozumienia hierarchii JOIN, podzapytań i GROUP BY poprzez wyraźne wcięcia i podziały wierszy
- Podczas udostępniania fragmentów SQL kolegom, najpierw sformatowanie, a następnie udostępnienie przez link URL, odbiorca otworzy i zobaczy ten sam sformatowany wynik
Jak Używać
- Wybierz dialekt bazy danych (domyślnie MySQL, obsługuje 20 dialektów SQL), aby zapewnić, że formatter poprawnie rozpozna składnię
- Wklej instrukcje SQL do sformatowania w lewym obszarze edycji, lub kliknij przycisk wysyłania, aby zaimportować pliki .sql/.txt, możesz również załadować przykładowy SQL z menu przykładów
- Kliknij przycisk formatuj (Shift+Cmd/Ctrl+F) lub poczekaj na automatyczne formatowanie (uruchamiane automatycznie 800 ms po wprowadzeniu), sformatowany wynik jest natychmiast wyświetlany po prawej stronie
- Jeśli chcesz dostosować formatowanie, kliknij przycisk ustawień, aby rozwinąć panel konfiguracji, dostosuj opcje, takie jak wielkość liter słów kluczowych, wcięcia, podziały wierszy, lub wybierz predefiniowany styl; jeśli potrzebujesz jednowierszowej kompresji, kliknij przycisk kompresuj
- Kliknij przycisk kopiuj, aby skopiować wynik, lub kliknij przycisk pobierania, aby zapisać jako plik .sql, możesz również kliknąć przycisk udostępnij, aby wygenerować link URL zawierający zawartość SQL
Funkcje
- Zgodność z 20 dialektami baz danych: obsługuje rozpoznawanie składni i formatowanie dla 20 dialektów SQL, w tym standardowego SQL, MySQL, MariaDB, TiDB, PostgreSQL, SQLite, BigQuery, Snowflake, Redshift, DB2, PL/SQL(Oracle), T-SQL(SQL Server), Spark SQL, Hive, Trino, ClickHouse, DuckDB itp.
- Kontrola wielkości liter słów kluczowych: obsługuje trzy tryby dla słów kluczowych, takich jak SELECT/FROM/WHERE/JOIN: wielkie litery (UPPER), małe litery (lower) lub zachowanie oryginału (preserve), z oddzielną konfiguracją dla typów danych i nazw funkcji
- Kontrola wielkości liter identyfikatorów: identyfikatory, takie jak nazwy tabel, kolumn i aliasów, obsługują wielkie litery, małe litery lub zachowanie oryginału, dostosowując się do różnych standardów kodowania zespołu
- Opcjonalny styl wcięć: obsługuje trzy style wcięć: standardowe wcięcia, wyrównanie tabelowe po lewej (tabularLeft) i wyrównanie tabelowe po prawej (tabularRight), spełniając różne preferencje czytelnicze
- Elastyczna konfiguracja wcięć: szerokość wcięcia może wynosić 2 spacje, 4 spacje lub znak Tab; liczba pustych wierszy między zapytaniami może wynosić 0/1/2 wiersze
- Łamanie wierszy operatorów logicznych: konfiguruje, czy operatory logiczne, takie jak AND/OR, łamią wiersz przed (before) czy po (after) operatorze, zgodnie ze stylem kodu zespołu
- Kontrola szerokości wyrażeń: próg znaków dla łamania wiersza wyrażeń jest konfigurowalny (20-200 znaków), automatycznie łamie wiersz po przekroczeniu szerokości, kontrolując długość pojedynczego wiersza
- Tryb gęstych operatorów: po włączeniu wokół operatorów nie pozostają dodatkowe spacje, generuje bardziej kompaktowy wynik formatowania, odpowiedni dla scenariuszy osadzonego SQL
- Łamanie wiersza przed średnikiem: opcjonalnie łamie wiersz przed średnikiem kończącym instrukcję, umieszczając średnik w osobnym wierszu w celu szybkiego lokalizowania granic instrukcji
- 4 predefiniowane style: przełączanie jednym kliknięciem między domyślnym (słowa kluczowe UPPER + wcięcia 2 spacje), małymi literami (wszystkie słowa kluczowe małymi literami), kompaktowym (wyrównanie tabelowe + gęste operatory) i luźnym (wcięcia 4 spacje + podwójne puste wiersze), bez konieczności dostosowywania każdego elementu
- Funkcja kompresji SQL: kompresuje SQL do jednego wiersza jednym kliknięciem, automatycznie usuwa komentarze, zbędne białe znaki i podziały wierszy, odpowiednia do wyjścia dzienników, łączenia kodu i scenariuszy osadzania w dokumentach
- Funkcja walidacji składni: podstawowa walidacja składni SQL, wyświetla komunikaty o błędach, gdy formatowanie się nie powiedzie, aby pomóc w zlokalizowaniu problemów ze składnią
- Wbudowane przykładowe zapytania SQL: udostępnia cztery grupy przykładowych zapytań SQL: zapytanie podstawowe, złożone zapytanie z łączeniem tabel, przetwarzanie wsadowe wielu instrukcji i instrukcja tworzenia tabeli CREATE TABLE, aby szybko przetestować efekt formatowania
- Wysyłanie/pobieranie plików: obsługuje wysyłanie plików .sql/.txt w celu bezpośredniego importu SQL, po sformatowaniu można pobrać jako plik .sql w celu zapisania
- Udostępnianie przez URL: używa kompresji LZ-String do kodowania SQL w haszu URL, skopiuj link, aby udostępnić konfigurację formatowania i zawartość SQL
- Automatyczne formatowanie w czasie rzeczywistym: automatycznie formatuje z opóźnieniem debounce 800 ms po wprowadzeniu SQL, zobacz efekt natychmiast podczas modyfikacji, bez konieczności wielokrotnego klikania przycisku
- Skróty klawiszowe: Shift+Cmd/Ctrl+F formatuj, Shift+Cmd/Ctrl+C kompresuj, Shift+Cmd/Ctrl+V waliduj, Shift+Cmd/Ctrl+O wysyłaj, Shift+Cmd/Ctrl+D pobieraj, Shift+Cmd/Ctrl+K wyczyść
- Edytor CodeMirror: edytor z podświetlaniem składni SQL oparty na CodeMirror 6, obsługuje dostosowywanie szerokości lewego/prawego panelu przez przeciąganie, dostosowywanie rozmiaru czcionki i panel historii
- Kopiowanie wyniku jednym kliknięciem: sformatowany lub skompresowany SQL można skopiować do schowka jednym kliknięciem, aby wkleić bezpośrednio do klientów baz danych lub kodu
- Całkowicie lokalne przetwarzanie w przeglądarce: całe formatowanie SQL jest wykonywane w JavaScript w przeglądarce, oparte na bibliotece sql-formatter, instrukcje SQL nie są wysyłane na żadne serwery, co gwarantuje bezpieczeństwo danych
Często Zadawane Pytania
Czy formatowanie SQL zmienia logikę zapytania? Czy sformatowany SQL można bezpośrednio wykonać?
Nie zmienia logiki zapytania. Formatowanie SQL dostosowuje tylko białe znaki (podziały wierszy, wcięcia, spacje) i wielkość liter słów kluczowych, nie modyfikuje identyfikatorów, wartości, operatorów, wywołań funkcji i struktury zapytania w SQL. Sformatowany SQL jest semantycznie całkowicie równoważny oryginalnemu SQL, można go bezpośrednio skopiować do klientów baz danych, takich jak MySQL Workbench, pgAdmin, DBeaver, Navicat w celu wykonania. Zaleca się jednak sprawdzenie w środowisku testowym przed wykonaniem w środowisku produkcyjnym.
Jakie dialekty baz danych są obsługiwane? Co zrobić, jeśli występują różnice w składni SQL między różnymi bazami danych?
Obsługuje 20 dialektów SQL: standardowy SQL, MySQL, MariaDB, TiDB, PostgreSQL, SQLite, BigQuery, Snowflake, Redshift, DB2, DB2i, PL/SQL(Oracle), T-SQL(SQL Server), Spark SQL, Hive, Trino, ClickHouse, SingleStoreDB, DuckDB, N1QL(Couchbase). Różne bazy danych mają różnice w składni stronicowania (LIMIT vs LIMIT/OFFSET vs TOP vs ROWNUM), łączeniu ciągów, funkcjach datowych, cytowaniu identyfikatorów (apostrof odwrócony vs podwójne cudzysłowy vs nawiasy kwadratowe) itp. Wybranie prawidłowego dialektu gwarantuje, że formatter poprawnie rozpozna słowa kluczowe i nazwy funkcji, unikając nieprawidłowego formatowania funkcji specyficznych dla dialektu.
Co to jest kompresja SQL? Jaka jest różnica między kompresją a formatowaniem?
Kompresja SQL (Minify) jest operacją odwrotną do formatowania: usuwa wszystkie komentarze (w tym wielowierszowe komentarze /* */ i jednowierszowe komentarze --), łączy kolejne białe znaki w pojedynczą spację, usuwa zbędne spacje wokół nawiasów/przecinków/średników/operatorów i generuje kompaktowy jednowierszowy SQL. Kompresja jest odpowiednia dla następujących scenariuszy: osadzanie SQL w ciągach kodu, zapisywanie do plików dziennika, przekazywanie przez parametry URL, udostępnianie w oknach czatu w celu uniknięcia zakłóceń podziałów wierszy. Formatowanie natomiast dodaje odpowiednie podziały wierszy i wcięcia w celu poprawy czytelności.
Kiedy uruchamiane jest automatyczne formatowanie? Czy można je wyłączyć?
Po wprowadzeniu lub modyfikacji SQL w lewym obszarze edycji formatowanie jest automatycznie uruchamiane po opóźnieniu debounce 800 ms (pod warunkiem, że poprzednie formatowanie nie miało błędów składni). Ma to na celu natychmiastowe wyświetlenie sformatowanego efektu po zaprzestaniu pisania. Jeśli wolisz sterowanie ręczne, po prostu kliknij przycisk formatuj na pasku narzędzi, nie musisz czekać na automatyczne uruchomienie. Obecnie nie ma oddzielnego przełącznika do wyłączania automatycznego formatowania, ale nie jest ono uruchamiane wielokrotnie, dopóki zawartość wejściowa nie zostanie zmodyfikowana.
Co zrobić, jeśli formatowanie się nie powiedzie i wskaże błąd składni?
Formatter zgłasza błąd, gdy napotka składnię SQL, której nie może przeanalizować, częste przyczyny obejmują: 1) Niedopasowane nawiasy — sprawdź, czy liczba lewych i prawych nawiasów jest zgodna; 2) Niezamknięty ciąg — sprawdź, czy pojedyncze/podwójne cudzysłowy występują w parach; 3) Błąd pisowni słów kluczowych — takie jak literówki jak SELCT, WHRER itp.; 4) Nieprawidłowy dialekt bazy danych — na przykład użycie składni konwersji typu :: specyficznej dla PostgreSQL, ale wybrano dialekt MySQL; 5) Niekompletny fragment SQL — na przykład tylko warunek WHERE bez SELECT FROM. Komunikat o błędzie wyświetla pozycję i przyczynę problemu zgłoszonego przez parser, możesz zlokalizować problem na tej podstawie. Możesz również najpierw kliknąć przycisk waliduj (Shift+Cmd/Ctrl+V), aby sprawdzić składnię.
Jak wybrać między trzema trybami: słowa kluczowe wielkimi literami, małymi literami lub zachowanie oryginału?
Słowa kluczowe wielkimi literami (UPPER) to najbardziej tradycyjny i popularny styl kodowania SQL, słowa kluczowe, takie jak SELECT/FROM/WHERE/JOIN, wielkimi literami wizualnie odróżniają je od nazw tabel/kolumn, umożliwiając szybkie zlokalizowanie struktury SQL w dużych ilościach kodu. Słowa kluczowe małymi literami są bardziej odpowiednie dla nowoczesnych środowisk IDE (nowoczesne edytory mają podświetlanie składni, nie polegają już na rozróżnianiu wielkości liter), wizualnie bardziej jednolite. Zachowanie oryginału (preserve) nie zmienia wielkości liter, którą wpisałeś, odpowiednie do wprowadzania minimalnych zmian formatowania w istniejącym kodzie. Słowa kluczowe, identyfikatory (nazwy tabel i kolumn), typy danych (VARCHAR/INT/BIGINT) i nazwy funkcji (COUNT/SUM/COALESCE) mogą mieć niezależnie ustawione strategie wielkości liter.
Jaka jest różnica między trybem wyrównania tabelowego a standardowymi wcięciami?
Standardowe wcięcia (standard) używają tradycyjnej metody hierarchicznych wcięć, każda klauzula jest wcięta o stałą liczbę spacji. Tryby wyrównania tabelowego po lewej/prawej stronie wyrównują nazwy kolumn na liście SELECT, wyrażenia w warunkach WHERE itp. według kolumn, tworząc efekt wizualny podobny do tabeli. Na przykład wiele nazw kolumn po SELECT jest wyrównanych pionowo, aliasy AS są również wyrównane w tej samej pozycji kolumny. Ten tryb jest bardzo intuicyjny podczas czytania wielokolumnowych zapytań na monitorach szerokoekranowych, ale na wąskich ekranach może prowadzić do zbyt długich wierszy.
Jak szybko przełączać się między ujednoliconym stylem SQL zespołu a osobistymi preferencjami?
Użyj predefiniowanych przycisków w panelu ustawień: domyślny (słowa kluczowe UPPER + standardowe wcięcia 2 spacje), małe litery (wszystkie słowa kluczowe małymi literami), kompaktowy (wyrównanie tabularLeft + gęste operatory), luźny (wcięcia 4 spacje + podwójne puste wiersze między zapytaniami). Jeśli Twój zespół ma określone reguły, ręcznie dostosuj opcje i sformatuj. Obecnie nie ma obsługi zapisywania niestandardowych predefinicji, ale liczba opcji konfiguracyjnych jest ograniczona, szybkie dostosowanie jest również wygodne.
Czy sformatowany SQL traci komentarze?
Operacja formatowania (Format) zachowuje komentarze, jednowierszowe komentarze -- i wielowierszowe komentarze /* */ są zachowywane w pobliżu oryginalnej pozycji (konkretna pozycja zależy od logiki przetwarzania komentarzy biblioteki sql-formatter). Ale operacja kompresji (Compress) usuwa wszystkie komentarze w celu wygenerowania najbardziej kompaktowego jednowierszowego SQL, jeśli chcesz zachować komentarze przed kompresją, najpierw skopiuj sformatowany wynik.
Jakie skróty klawiszowe są obsługiwane? Jaka jest różnica między Mac a Windows/Linux?
Obsługuje następujące skróty klawiszowe (Mac używa klawisza Cmd, Windows/Linux używają klawisza Ctrl, oba wymagają jednoczesnego przytrzymania Shift): Shift+Cmd/Ctrl+F formatuj; Shift+Cmd/Ctrl+C kompresuj; Shift+Cmd/Ctrl+V walidacja składni; Shift+Cmd/Ctrl+O wysyłanie pliku; Shift+Cmd/Ctrl+D pobieranie pliku; Shift+Cmd/Ctrl+K wyczyszczenie zawartości. Kliknij ikonę znaku zapytania na pasku narzędzi, aby wyświetlić listę skrótów klawiszowych w dowolnym momencie.
Czy istnieje limit rozmiaru wysyłanych plików SQL? Jakie formaty plików są obsługiwane?
Obsługuje wysyłanie plików tekstowych w formatach .sql i .txt, teoretycznie nie ma sztywnego limitu rozmiaru pliku, ale przeglądarka może mieć problemy z wydajnością podczas przetwarzania bardzo dużych plików (takich jak pliki zrzutu SQL większe niż 1 MB). Zaleca się przetwarzanie pojedynczych zapytań lub plików skryptów o małej skali. W przypadku bardzo dużych plików SQL (takich jak pełne zrzuty baz danych) zaleca się najpierw podzielenie na mniejsze fragmenty przed formatowaniem. Zawartość pliku jest odczytywana przez API FileReader przeglądarki, nie jest wysyłana na serwer.
Czy funkcja udostępniania przez URL jest bezpieczna? Czy zawartość SQL jest widziana przez serwer?
Funkcja udostępniania przez URL używa kompresji LZ-String do kodowania zawartości SQL w części haszującej URL (zawartość po #). Cechą części haszującej URL jest to, że nie jest wysyłana na serwer z żądaniami HTTP, jest przetwarzana tylko lokalnie w przeglądarce. Gdy kopiujesz link udostępniania innej osobie, przeglądarka odbiorcy analizuje hasz i dekompresuje go w celu wyświetlenia zawartości SQL, podczas całego procesu SQL nie przechodzi przez żadne serwery. Należy jednak pamiętać, że link udostępniania zawiera pełną zawartość SQL, jeśli SQL zawiera poufne informacje (takie jak hasła, klucze, dane osobowe), nie udostępniaj linku w kanałach publicznych.
Czy można formatować skrypty zawierające wiele instrukcji SQL?
Tak. Narzędzie obsługuje wsadowe formatowanie wielu instrukcji SQL (takich jak wiele instrukcji SELECT/INSERT/UPDATE/CREATE TABLE oddzielonych średnikami). Możesz kontrolować odstęp między instrukcjami (0/1/2 wiersze) za pomocą opcji „Puste wiersze między zapytaniami” w panelu ustawień. Załaduj przykładowy SQL „Wiele instrukcji”, aby przetestować efekt formatowania wielu instrukcji. Każda instrukcja jest niezależnie wcinana i układana, instrukcje są oddzielone skonfigurowaną liczbą pustych wierszy.
Jaki rozmiar instrukcji SQL powoduje opóźnienia?
Czysto JavaScriptowa implementacja oparta na bibliotece sql-formatter, przetwarzanie SQL do kilkuset wierszy zazwyczaj ma odpowiedź w milisekundach w nowoczesnych przeglądarkach, bez odczucia opóźnienia. Nawet procedury składowane o tysiącach wierszy lub złożone zapytania mogą zostać zakończone w mniej niż 1 sekundę. Wszystkie obliczenia są wykonywane w głównym wątku przeglądarki, bardzo duże pliki (takie jak zrzuty SQL z ponad 10 000 wierszy) mogą spowodować tymczasowe zamrożenie interfejsu, zaleca się przetwarzanie wsadowe.
Czy narzędzie wymaga połączenia internetowego do użycia? Czy dane SQL są bezpieczne?
Może być używane offline po załadowaniu strony, formatowanie, kompresja i walidacja SQL są wszystkie wykonywane w lokalnym JavaScript w przeglądarce, nie wysyła wpisanych przez Ciebie instrukcji SQL na żadne zewnętrzne serwery. Nie używa śledzenia plików Cookie, nie zbiera zawartości SQL wpisanej przez użytkownika ani danych o zachowaniu podczas użytkowania. Zaimplementowane na podstawie dojrzałej biblioteki open-source sql-formatter, logika kodu jest przezroczysta i weryfikowalna.
Rozwiązywanie problemów
Co zrobić, jeśli formatowanie zgłosi błąd „Parse error” lub „Niepowodzenie formatowania SQL”?
Formatter analizuje SQL na podstawie biblioteki sql-formatter, zgłasza błąd podczas napotkania nierozpoznanej składni. Częste przyczyny i rozwiązania: 1) Niedopasowane nawiasy — sprawdź, czy liczba lewych i prawych nawiasów jest zgodna, możesz użyć funkcji podświetlania dopasowania nawiasów edytora do pomocy w sprawdzaniu; 2) Niezamknięte cudzysłowy ciągu — sprawdź, czy pojedyncze i podwójne cudzysłowy występują w parach, cudzysłowy w ciągach muszą być eskejpowane (takie jak '' lub \'); 3) Nieprawidłowy wybór dialektu bazy danych — na przykład użycie operatora :: PostgreSQL, ale wybrano dialekt MySQL, przełącz się na prawidłowy dialekt; 4) Niekompletna instrukcja SQL — na przykład tylko klauzula WHERE bez SELECT FROM; 5) Użycie bardzo specyficznej składni bazy danych (takiej jak określone przepływy sterowania procedur składowanych), spróbuj przełączyć się na najbliższy dialekt lub uprościć fragment SQL przed formatowaniem.
Chińskie lub specjalne znaki są wyświetlane jako nieczytelne po formatowaniu?
To narzędzie w pełni obsługuje kodowanie UTF-8, chińskie i znaki Unicode pozostają niezmienione podczas formatowania. Jeśli pojawią się nieczytelne znaki, zazwyczaj jest to spowodowane tym, że wklejony SQL pochodzi z pliku z nieprawidłowym kodowaniem (na przykład skopiowany z pliku z kodowaniem GBK). Upewnij się, że plik źródłowy jest zapisany z kodowaniem UTF-8, lub przekonwertuj plik na kodowanie UTF-8 przed wklejeniem. Edytor CodeMirror w przeglądarce domyślnie używa UTF-8, nie wprowadza konwersji kodowania.
Po wysłaniu pliku SQL nie ma reakcji lub jest wyświetlany jako pusty?
Wysyłanie plików obsługuje tylko pliki tekstowe z rozszerzeniami .sql i .txt. Jeśli plik jest w formacie binarnym (takim jak plik bazy danych .sqlite, dokument .doc), po wysłaniu zostaną wyświetlone nieczytelne znaki lub będzie pusty. Ponadto niektóre przeglądarki mają ograniczenia bezpieczeństwa dotyczące odczytywania plików lokalnych przez JavaScript, upewnij się, że wybierasz plik przez aktywne kliknięcie przycisku wysyłania, a nie przez przeciąganie i upuszczanie (wysyłanie przez przeciąganie i upuszczanie nie jest obecnie obsługiwane). Zalecany rozmiar pliku nie większy niż 1 MB, przekroczenie może spowodować powolne analizowanie w przeglądarce.
Po formatowaniu niektóre słowa kluczowe stały się małymi/wielkimi literami, niezgodnie z oryginalnym wejściem?
Jest to normalne zachowanie formatowania. Opcja wielkości liter słów kluczowych (keywordCase) jest domyślnie ustawiona na UPPER, spowoduje jednolite przekonwertowanie słów kluczowych SQL na wielkie litery. Jeśli chcesz zachować oryginalną wielkość liter bez zmian, zmień opcje wielkości liter słów kluczowych, identyfikatorów, typów danych i funkcji w panelu ustawień na „Zachowaj oryginał (preserve)”, wtedy formatter będzie tylko dostosowywał podziały wierszy i wcięcia, nie zmieni wielkości liter żadnej litery.
Słownik
- Dialekt SQL (SQL Dialect)
- Rozszerzenia i warianty standardowego SQL przez różne systemy zarządzania bazami danych (DBMS). Na przykład LIMIT w MySQL, konwersja typu :: w PostgreSQL, TOP w SQL Server, ROWNUM w Oracle itp. to składnie specyficzne dla dialektu. Podczas formatowania należy wybrać prawidłowy dialekt, aby zapewnić poprawną analizę składni.
- Wielkość liter słów kluczowych (Keyword Case)
- Strategia wielkości liter dla słów zastrzeżonych SQL (SELECT/FROM/WHERE/JOIN itp.). Wielkie litery (UPPER) to tradycyjny styl, małe litery (lower) stają się coraz bardziej popularne w nowoczesnym tworzeniu oprogramowania, zachowanie oryginału (preserve) jest używane do minimalnych zmian.
- Identyfikator (Identifier)
- Nazwy obiektów baz danych w SQL, w tym nazwy baz danych, tabel, kolumn, aliasów, indeksów, widoków, procedur składowanych itp. Różne bazy danych cytują identyfikatory na różne sposoby: MySQL używa apostrofu odwróconego, PostgreSQL używa podwójnych cudzysłowów, SQL Server używa nawiasów kwadratowych.
- Styl wcięć (Indent Style)
- Kontroluje sposób wyrównywania wcięć podczas formatowania SQL. Standardowe wcięcia używają hierarchicznej progresji; tabularLeft/tabularRight wyrównują nazwy kolumn i aliasy w formacie tabelowym, lepsza czytelność na szerokim ekranie, ale mogą tworzyć dłuższe wiersze.
- Łamanie wierszy operatorów logicznych (Logical Operator Newline)
- Pozycja łamania wiersza operatorów logicznych, takich jak AND/OR, w wielowierszowych warunkach. before oznacza, że operator znajduje się na początku następnego wiersza, after oznacza, że operator znajduje się na końcu bieżącego wiersza. Różne zespoły mają różne preferencje.
- Szerokość wyrażenia (Expression Width)
- Próg znaków w wierszu, który aktywuje łamanie wiersza (20-200 znaków). Wyrażenia przekraczające tę szerokość zostaną złamane, podobnie jak ustawienie printWidth/ruler w edytorach kodu.
- Gęste operatory (Dense Operators)
- Jedna z opcji formatowania, po włączeniu wokół operatorów (=, <, >, +, - itp.) nie pozostają dodatkowe spacje, na przykład `WHERE id=1 AND status='active'` zamiast `WHERE id = 1 AND status = 'active'`, generuje bardziej kompaktowe wyjście.
- Puste wiersze między zapytaniami (Lines Between Queries)
- Liczba pustych wierszy między wieloma instrukcjami SQL. 0 oznacza bezpośrednie umieszczenie, 1 oznacza oddzielenie jednym pustym wierszem (powszechne), 2 oznacza dwa puste wiersze (luźny styl), wpływa na czytelność skryptów z wieloma instrukcjami.
- Kompresja/minifikacja SQL (SQL Minify/Compress)
- Usuwanie wszystkich komentarzy i zbędnych białych znaków ze sformatowanego SQL, łączenie w kompaktowy jednowierszowy format. Odpowiednie dla scenariuszy, takich jak wyjście dzienników, osadzanie kodu, przekazywanie przez URL itp., jest operacją odwrotną do formatowania.
- Ładne drukowanie (Pretty Print)
- Generowanie wyjścia kodu lub danych w dobrze czytelnym formacie za pomocą automatycznych wcięć i podziałów wierszy. SQL Pretty Print to upiększanie i formatowanie SQL, przeciwieństwo Minify (kompresji).
- CodeMirror
- Komponent edytora kodu w przeglądarce używany przez to narzędzie (wersja 6), zapewnia funkcje ulepszania edycji, takie jak podświetlanie składni SQL, wyświetlanie numerów wierszy, zwijanie kodu itp., jest szeroko stosowanym w branży rozwiązaniem edytora kodu WWW.
- sql-formatter
- Biblioteka open-source do formatowania SQL używana w rdzeniu tego narzędzia, obsługuje analizę leksykalną i sformatowane wyjście dla różnych dialektów SQL, jest jedną z najpopularniejszych bibliotek do formatowania SQL w ekosystemie frontend.
Lista obsługiwanych dialektów SQL
Narzędzie obsługuje 20 dialektów baz danych SQL, wybierz dialekt odpowiadający używanej bazie danych, aby uzyskać najlepszy efekt formatowania:
| Dialekt | Baza danych | Opis cech |
|---|---|---|
| Standard SQL | Standardowy SQL | Standardowa składnia ANSI SQL, odpowiednia dla ogólnych scenariuszy i nieznanych dialektów |
| MySQL | MySQL / TiDB | Najpopularniejsza otwarta relacyjna baza danych, identyfikatory w apostrofach odwróconych, stronicowanie LIMIT |
| MariaDB | MariaDB | Odgałęzienie MySQL, zgodne ze składnią MySQL i rozszerzone o więcej funkcji |
| PostgreSQL | PostgreSQL | Bogata w funkcje otwarta baza danych, identyfikatory w podwójnych cudzysłowach, konwersja typu :: |
| SQLite | SQLite | Lekka osadzona baza danych, powszechnie używana w aplikacjach mobilnych i przeglądarkach |
| T-SQL | SQL Server / Azure | Transact-SQL Microsoft SQL Server, identyfikatory w nawiasach kwadratowych, stronicowanie TOP |
| PL/SQL | Oracle | Proceduralne rozszerzenie SQL Oracle, stronicowanie ROWNUM, bogate wbudowane pakiety |
| BigQuery | Google BigQuery | Chmurowa hurtownia danych Google, obsługuje typy zagnieżdżone, takie jak STRUCT/ARRAY |
| Snowflake | Snowflake | Chmurowa natywna hurtownia danych, duże możliwości przetwarzania danych półustrukturyzowanych |
| Redshift | AWS Redshift | Chmurowa hurtownia danych Amazon, oparta na PostgreSQL, ale ze specyficzną składnią |
Porównanie predefiniowanych stylów formatowania
4 predefiniowane style jednym kliknięciem są odpowiednie dla różnych scenariuszy użycia:
| Predefinicja | Słowa kluczowe | Wcięcia | Operatory | Odstęp między zapytaniami |
|---|---|---|---|---|
| Domyślny | UPPER | 2 spacje Standard | Normalne odstępy | 1 pusty wiersz |
| Małe litery | lower | 2 spacje Standard | Normalne odstępy | 1 pusty wiersz |
| Kompaktowy | UPPER | Tabelowe lewe | Tryb kompaktowy | 1 pusty wiersz |
| Luźny | UPPER | 4 spacje Standard | Normalne odstępy | 2 puste wiersze |
Przegląd skrótów klawiszowych
Wszystkie skróty klawiszowe wymagają jednoczesnego przytrzymania klawisza modyfikatora+Shift+odpowiedniej litery:
| Akcja | Mac | Windows/Linux | Opis |
|---|---|---|---|
| Formatuj | ⇧⌘F | Shift+Ctrl+F | Upiększa instrukcje SQL, dodaje podziały wierszy i wcięcia |
| Kompresuj | ⇧⌘C | Shift+Ctrl+C | Kompresuje SQL do jednego wiersza, usuwa komentarze i białe znaki |
| Waliduj | ⇧⌘V | Shift+Ctrl+V | Sprawdza poprawność składni SQL |
| Wyślij | ⇧⌘O | Shift+Ctrl+O | Ładuje .sql/.txt z pliku lokalnego |
| Pobierz | ⇧⌘D | Shift+Ctrl+D | Zapisuje wynik jako plik .sql |
| Wyczyść | ⇧⌘K | Shift+Ctrl+K | Czyści zawartość wejściową i wyjściową |
Privacy & Security
Wszystkie operacje tego narzędzia do formatowania SQL są wykonywane całkowicie lokalnie w Twojej przeglądarce: wpisane przez Ciebie instrukcje SQL, wybrany dialekt i konfiguracja formatowania są wszystkie przetwarzane w JavaScript przeglądarki przez bibliotekę sql-formatter, żadna zawartość SQL ani konfiguracja nie jest wysyłana przez sieć na zewnętrzne serwery. Wysyłanie plików odczytuje zawartość plików lokalnych przez API HTML5 FileReader, bez transmisji sieciowej. Funkcja udostępniania przez URL kompresuje SQL i koduje go w części haszującej URL (zawartość po # nie jest wysyłana na serwer z żądaniami HTTP), tylko lokalnie dekompresuje i wyświetla w przeglądarce. Nie używa śledzenia plików Cookie, nie zbiera zawartości SQL wpisanej przez użytkownika ani danych o zachowaniu podczas użytkowania. Po zamknięciu lub odświeżeniu strony zawartość wejściowa i stan konfiguracji są automatycznie resetowane (historia jest zapisywana tylko w lokalnym localStorage).
Authoritative References
- GitHubOficjalna dokumentacja sql-formatter
- codemirror.netOficjalna strona CodeMirror 6
- WikipediaWikipedia - Składnia SQL
- Symulator daltonizmu
- Konwerter kolorów
- Konwerter .htaccess na Nginx
- Konwerter SQL
- Parser Cookie
- Generator wyrażeń Cron
- Weryfikator wyrażeń Cron
- Formatowanie CSS
- Kompresja CSS
- CSV na Excel
- Konwerter walut
- Porównywanie różnic
- Generator ikon witryn
- Formatowanie XML
- Konwerter Szesnastkowy
- Formatowanie HTML
- Kompresja HTML
- HTML na Markdown
- Markdown na HTML
- Formatowanie JavaScript
- Kompresja JavaScript
- Formatownik JSX
- Kompresja JSX
- Grupowanie słów kluczowych
- Generator Lorem Ipsum
- Generator tabel Markdown
- Generator Meta Tagów
- Generator haseł
- Sprawdzanie siły hasła
- Generator QR Code i kodów kreskowych
- Tester Wyrażeń Regularnych
- Generator Slug
- Kreator SQL
- Narzędzie do formatowania SQL
- Licznik Słów
- Narzędzia czasowe
- Formatowanie TS
- Kompresja TS
- Formatowanie TSX
- Kompresja TSX
- Konwerter Unix Timestamp
- Generator UUID
- Formatowanie YAML
- Konwersja sprawy