Jak používat
- Vložte jeden nebo více příkazů SQL nebo stiskněte „Vyzkoušet příklad“.
- Vyberte dialekt své databáze, aby byla rozpoznána její klíčová slova, způsob uvozování a operátory.
- Nastavte velikost písmen klíčových slov a odsazení. Naformátovaný dotaz se při psaní zobrazuje vpravo.
- Stiskněte Minifikovat a získejte jednořádkovou verzi; poté výsledek zkopírujte nebo stáhněte jako soubor .sql.
Jak to funguje
Formátování využívá open-source knihovnu sql-formatter. Dotaz rozdělí na tokeny podle pravidel zvoleného dialektu, každou hlavní klauzuli (SELECT, FROM, JOIN, WHERE, GROUP BY, ORDER BY…) umístí na vlastní řádek, odsadí seznamy sloupců a podmínky a použije vámi zvolenou velikost písmen klíčových slov. Mění bílé znaky a na vyžádání i velikost písmen klíčových slov; identifikátory, řetězcové literály a komentáře zůstávají zachovány. Volba správného dialektu je důležitá: zpětné uvozovky ohraničují názvy v MySQL, hranaté závorky v SQL Serveru a $$ zahajuje tělo funkce v PostgreSQL.
Formátovač je nástroj pro úpravu vzhledu, nikoli databáze. Nekontroluje, zda tabulky nebo sloupce existují, a neověřuje celou gramatiku, takže některé neplatné SQL naformátuje bez upozornění. Když vstupu nedokáže porozumět, například u neuzavřené závorky, ohlásí řádek a sloupec, kde skončil.
Minifikace funguje jinak: zachovává každý token, každý souvislý úsek bílých znaků nahradí jednou mezerou a odstraňuje komentáře (hinty optimalizátoru, jako /*+ INDEX(t) */, a komentáře MySQL /*! … */ zůstávají, protože mění chování). Řetězce, identifikátory v uvozovkách a dolarově ohraničená těla se kopírují beze změny. Pokud uvozovka nebo komentář není nikdy uzavřen, minifikace se zastaví s chybou místo hádání.
Příklady
Čtení dotazu z logu
Log pomalých dotazů ukazuje jeden řádek o 400 znacích. S dialektem MySQL a velkými písmeny klíčových slov se z něj stane čitelný blok, kde každá klauzule JOIN a každá podmínka WHERE je na vlastním řádku, takže chybějící index snadno odhalíte.
Konzistentní styl pro revizi kódu
Tým před commitem formátuje každou migraci dialektem PostgreSQL, malými klíčovými slovy a odsazením o 4 mezery, takže diff zobrazuje jen skutečné změny.
Vkládání SQL do kódu
Minifikace převede okomentovaný víceřádkový reportovací dotaz na jeden řádek, např. SELECT id, name FROM users WHERE active = 1 ORDER BY name, připravený k vložení do řetězce ve skriptu.
Časté dotazy
Které databáze jsou podporovány?
Standard 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 a Couchbase N1QL.
Změní formátování chování mého dotazu?
Nemělo by: mění se pouze bílé znaky a – pokud je zvoleno – velikost písmen klíčových slov. Na velikosti písmen klíčových slov v SQL nezáleží. Přesto zkontrolujte vygenerovaný výstup, než jej spustíte nad produkčními daty, zejména u neobvyklých vlastností dialektu.
Proč se zobrazila zpráva „could not be formatted“?
Tokenizér narazil na něco, co nedokázal zařadit, často na neuzavřenou závorku nebo uvozovku, případně na syntaxi z jiného dialektu. Zkontrolujte řádek a sloupec v hlášení a ujistěte se, že vybraný dialekt odpovídá vaší databázi.
Ověřuje můj SQL?
Ne. Není připojen k databázi a nezná vaše schéma. Dotaz může být naformátován, a přesto může při spuštění selhat.
Soukromí
Vaše SQL se formátuje ve vašem prohlížeči pomocí JavaScriptu. Nikam se neodesílá, neukládá se ani nezahrnuje do analýz a nástroj se nikdy nepřipojuje k databázi.