Formatter i walidator SQL
Uporządkuj lub zminifikuj SQL i sprawdź jego składnię — z dokładną linią i kolumną błędu, dla 20 dialektów, w całości w przeglądarce.
Wszystko działa w Twojej przeglądarce — SQL nigdy nie jest wysyłany na żaden serwer.
Opcje
Upuść tutaj plik .sql lub .txt, wklej tekst albo wczytaj przykład. Naciśnij Ctrl+Enter, aby uruchomić.
Sprawdzanie składni
„Poprawna” oznacza, że składnia jest zgodna z tą gramatyką. Walidator nie zna schematu bazy danych, więc nie wie, czy tabele i kolumny istnieją ani czy zapytanie się wykona. Składnia specyficzna dla dialektu lub bardzo nowa może zostać odrzucona, mimo że Twoja baza danych ją akceptuje.
Formatowanie, minifikacja i sprawdzanie SQL w przeglądarce
Czytelny SQL łatwiej przeglądać, debugować i porównywać. To narzędzie przepisuje zapytanie ze spójnymi wcięciami, podziałami wierszy i wielkością liter słów kluczowych oraz zna odrębności około dwudziestu dialektów, w tym MySQL, PostgreSQL, SQL Server (T-SQL), SQLite, BigQuery, Snowflake, Redshift, Oracle PL/SQL, Hive, Spark, Trino i DB2. Wybierz dialekt, dwie lub cztery spacje albo tabulator, zdecyduj, czy słowa kluczowe, typy danych i nazwy funkcji mają być pisane wielkimi, małymi literami, czy zostać bez zmian, a jeśli taki styl przyjął Twój zespół, przenieś przecinki na początek wierszy.
Sprawdzanie składni to druga połowa narzędzia. Wklej skrypt, a każda instrukcja zostanie zwalidowana osobno, więc zobaczysz, które przechodzą, a które nie. Przy błędzie widać linię i kolumnę, problematyczny token, kilka wierszy kontekstu oraz, jeśli to możliwe, podpowiedź — na przykład o literówce w słowie kluczowym, zbędnym przecinku lub niezamkniętym nawiasie. Dzielenie skryptu uwzględnia ciągi znaków, komentarze, odwrotne apostrofy, nawiasy kwadratowe i bloki dollar-quoted z PostgreSQL, dzięki czemu średnik wewnątrz literału nigdy nie przecina instrukcji na pół.
Minifikacja robi coś odwrotnego niż formatowanie: skraca białe znaki i, jeśli chcesz, usuwa komentarze, dając zwarte zapytanie w jednym wierszu — do logów, plików konfiguracyjnych lub osadzenia w kodzie. Pracuje na tokenach, a nie na wyrażeniach regularnych, więc tekst w ciągach znaków i nazwach w cudzysłowie pozostaje dokładnie taki, jak go zapisano.
Pamiętaj o ograniczeniach. Zielony wynik dowodzi, że składnia pasuje do wybranej gramatyki, ale nie że Twoje tabele istnieją ani że zapytanie jest szybkie lub poprawne. Niektóre dialekty, bloki proceduralne i najnowsze funkcje są obsługiwane tylko częściowo, a dla kilku dialektów nie ma osobnego walidatora — wtedy możesz sam wybrać najbliższą gramatykę. Wszystko dzieje się lokalnie, więc bez obaw wklejisz zapytania produkcyjne, a przy dużym pliku podgląd na żywo po prostu się wstrzymuje, dopóki nie klikniesz przycisku.
Najczęstsze pytania
Czy „poprawna” składnia oznacza, że zapytanie się wykona?
Nie. Walidator sprawdza wyłącznie składnię. Nie ma dostępu do Twojej bazy danych, więc nie wie, czy tabela lub kolumna istnieje, czy typy do siebie pasują ani czy masz odpowiednie uprawnienia. Korzysta też z własnej gramatyki, dlatego zupełnie nowa lub specyficzna dla danego producenta składnia może zostać odrzucona, mimo że Twoja baza ją przyjmuje. Zielony wynik traktuj jako „SQL jest poprawnie zbudowany”, a czerwony jako „zajrzyj w to miejsce”.
Czy mój SQL jest gdzieś wysyłany?
Nie. Formatowanie, minifikacja i sprawdzanie składni odbywają się w Twojej przeglądarce, w procesie działającym w tle. Nic nie jest wysyłane na serwer. Opcjonalna wersja robocza i ustawienia są zapisywane wyłącznie w pamięci lokalnej tej przeglądarki.
Dlaczego formatter może się powieść, a walidator zgłasza błąd?
To dwa różne mechanizmy. Formatter musi tylko rozpoznać tokeny i klauzule, więc jest wyrozumiały. Walidator używa pełnej gramatyki wybranego dialektu i jest bardziej rygorystyczny. Gdy się nie zgadzają, zobaczysz ostrzeżenie: wynik nadal jest wyświetlany, ale oznaczony wiersz warto sprawdzić.
Czy minifikacja zmienia działanie mojego zapytania?
Usuwa tylko białe znaki i komentarze. Ciągi znaków, identyfikatory w cudzysłowie, bloki w stylu dollar-quoted i podpowiedzi dla optymalizatora są kopiowane znak po znaku, a tokeny, które się stykały, nadal się stykają. Na wszelki wypadek nie minifikuj skryptów zależnych od podziałów wierszy, na przykład bloków MySQL DELIMITER.