Utilia

SQL Formatter

I-format ang SQL query para sa PostgreSQL, MySQL, SQL Server, Oracle, BigQuery, Snowflake at iba pa, may opsyon sa case ng keyword at indentation.

Paano mag-format ng SQL query

  1. Mag-paste ng isa o higit pang query, o i-click ang Buksan ang file para mag-load ng .sql file (hanggang 10 MB).
  2. Piliin ang Dialect ng iyong database, halimbawa PostgreSQL, MySQL o SQL Server (T-SQL).
  3. Piliin kung paano isusulat ang Mga keyword (MALALAKING TITIK, maliliit na titik o Panatilihin ayon sa tinype) at ang Indentation.
  4. I-tick ang Walang espasyo sa paligid ng mga operator kung mas gusto mo ang a=b+1 kaysa sa a = b + 1.
  5. I-click ang I-format ang SQL, pagkatapos ay kopyahin o i-download ang resulta. Kapag nagpalit ka ng opsyon, ire-format ulit ang query.

Text lang ang pino-format sa query. Hindi ito kailanman pinatatakbo at hindi ipinapadala sa database o sa server.

Ano ang ginagawa ng formatter

Gumagamit ang tool ng open-source na sql-formatter library. Hinahati nito ang bawat statement sa mga clause at inilalagay sa sariling linya ang bawat keyword ng clause (SELECT, FROM, WHERE, GROUP BY, ORDER BY…), na may indent ang nilalaman ng clause sa ilalim nito. Isa bawat linya ang mga column sa listahan ng SELECT, nagsisimula ng bagong linya ang mga kondisyong AND at OR, at may indent ayon sa antas ng pagkaka-nest ang mga subquery at CASE expression. Nananatili sa iisang linya ang maiikling expression na nasa panaklong. Ang ilang statement na pinaghihiwalay ng semicolon ay pinaghihiwalay ng blangkong linya.

Whitespace at case ng letra lang ang nagbabago. Eksaktong iniiwan ang mga string literal, quoted identifier at komento, kaya pareho ang resulta ng na-format na query sa orihinal.

Bakit mahalaga ang dialect

Iisa ang pangunahing wika ng mga SQL database pero magkakaiba sa mga detalye, at kailangang alam ng formatter ang mga ito para mabasa nang tama ang query:

  • ang mga identifier ay may quote na "double quotes" sa standard SQL at PostgreSQL, `backticks` sa MySQL, MariaDB at BigQuery, at [brackets] sa SQL Server;
  • ang mga operator gaya ng ->> at mga :: cast ng PostgreSQL, o ang : path access ng Snowflake, ay umiiral lang sa ilang dialect;
  • magkakaiba ang mga parameter placeholder: ?, $1, :name o @name;
  • bawat dialect ay may sariling reserved word at function, na binabago ng opsyong Mga keyword.

Kung lumabas ang “Hindi ma-parse ang query”, suriin muna kung tugma sa database mo ang napiling dialect. Ipinapakita ng error ang linya at column kung saan huminto ang pag-parse. Ang Standard SQL ang pinakamahigpit na pagpipilian; piliin ang aktwal mong database hangga’t maaari.

Mga tip sa case ng keyword at estilo

Ang mga uppercase na keyword pa rin ang pinakakaraniwang kumbensyon dahil naihihiwalay nito ang wika sa mga pangalan ng table at column sa isang sulyap. Popular ang lowercase sa mga team na mas madali itong basahin, at ang Panatilihin ayon sa tinype ay hindi gumagalaw sa pinili mo. Hindi kailanman binabago ang mga pangalan ng table, column at function: ang mga reserved keyword lang ang sumusunod sa opsyon. Sa mahahabang file, mas napapadali rin ng pare-parehong format ang pagsusuri ng mga pagkakaiba sa pagitan ng mga bersyon.

Mga madalas itanong

Aling mga dialect ang sinusuportahan?

Standard SQL, PostgreSQL, MySQL, MariaDB, SQLite, SQL Server (T-SQL), Oracle (PL/SQL), Google BigQuery, Snowflake, Amazon Redshift, IBM Db2, Db2 for i, Apache Hive, Spark SQL, Trino/Presto, DuckDB, ClickHouse, SingleStoreDB, TiDB at Couchbase N1QL.

Sinusuri ba ng tool kung valid ang query ko?

Hindi. Sinusuri nito kung mababasa ang query sa napiling dialect, pero hindi kung umiiral ang mga table o column o kung tatakbo ang query. Ang database mo lang ang makakapagkumpirma niyon.

Puwede ba nitong i-format ang mga stored procedure?

Bahagya. Naipo-format ang mga statement sa loob ng procedure, pero mas simple ang pagkakalatag ng mga procedural block (BEGIN … END, loop, DECLARE) kaysa sa nakalaang IDE.

Ipinapadala ba sa server ang query ko?

Hindi. Tumatakbo ang pag-format sa iyong browser, kaya nananatili sa computer mo ang mga query na may pangalan ng table o data.

Bakit iba ang pwesto ng komento ko?

Pinapanatili ang mga komento, pero ang komento sa dulo ng linya ay maaaring sumama sa elementong sinusundan nito kapag lumipat ang elementong iyon sa bagong linya.