tigtools

SQL formátovač

Vložte dotaz, vyberte dialekt databáze a získejte čisté, konzistentně odsazené SQL. Nic se neodesílá na server.

Běží ve vašem prohlížeči Bez registrace

Odsazení

Jak používat

  1. Vložte jeden nebo více příkazů SQL nebo stiskněte „Vyzkoušet příklad“.
  2. Vyberte dialekt své databáze, aby byla rozpoznána její klíčová slova, způsob uvozování a operátory.
  3. Nastavte velikost písmen klíčových slov a odsazení. Naformátovaný dotaz se při psaní zobrazuje vpravo.
  4. 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.