Cara menggunakannya
- Tampal satu atau lebih pernyataan SQL, atau tekan “Cuba contoh”.
- Pilih dialek pangkalan data anda supaya kata kunci, tanda petik dan operatornya dikenali.
- Tetapkan huruf besar/kecil kata kunci dan inden. Pertanyaan yang diformat muncul di sebelah kanan semasa anda menaip.
- Tekan Minify untuk versi satu baris, kemudian salin hasilnya atau muat turun sebagai fail .sql.
Cara ia berfungsi
Pemformatan menggunakan pustaka sumber terbuka sql-formatter. Ia memisahkan kueri kepada token mengikut peraturan dialek yang anda pilih, meletakkan setiap klausa utama (SELECT, FROM, JOIN, WHERE, GROUP BY, ORDER BY…) pada baris sendiri, menginden senarai lajur dan syarat, serta menerapkan pilihan huruf besar/kecil kata kunci anda. Ia mengubah ruang kosong dan, jika anda minta, huruf besar/kecil kata kunci; pengecam, literal rentetan dan komen dikekalkan. Memilih dialek yang betul penting: contohnya, tanda aksen belakang mengapit nama dalam MySQL, kurungan segi empat dalam SQL Server, dan $$ memulakan badan fungsi dalam PostgreSQL.
Pemformat ialah alat susun atur, bukan pangkalan data. Ia tidak menyemak sama ada jadual atau lajur wujud dan tidak mengesahkan tatabahasa penuh, jadi sebahagian SQL yang tidak sah mungkin diformat tanpa amaran. Apabila ia tidak dapat memahami input, contohnya tanda kurung tidak ditutup, ia melaporkan baris dan lajur tempat ia berhenti.
Minify berfungsi secara berbeza: ia mengekalkan setiap token dan hanya meruntuhkan setiap urutan ruang kosong kepada satu ruang, serta membuang komen (petua pengoptimum seperti /*+ INDEX(t) */ dan komen MySQL /*! … */ dikekalkan kerana mengubah tingkah laku). Rentetan, pengecam yang diapit dan badan yang diapit tanda dolar disalin tanpa perubahan. Jika petikan atau komen tidak pernah ditutup, minify berhenti dengan ralat dan bukannya meneka.
Contoh
Membaca pertanyaan daripada log
Log kueri perlahan menunjukkan satu baris sepanjang 400 aksara. Dengan dialek MySQL dan kata kunci huruf besar, ia menjadi blok yang mudah dibaca dengan setiap syarat JOIN dan WHERE pada baris sendiri, menjadikan indeks yang hilang mudah dikesan.
Gaya konsisten untuk semakan kod
Pasukan memformat setiap migrasi menggunakan dialek PostgreSQL, kata kunci huruf kecil dan inden 4 ruang sebelum commit, supaya diff hanya menunjukkan perubahan sebenar.
Menyematkan SQL dalam kod
Minify menukar pertanyaan laporan berbilang baris yang mempunyai komen kepada satu baris seperti SELECT id, name FROM users WHERE active = 1 ORDER BY name, sedia untuk ditampal ke dalam rentetan dalam skrip.
Soalan Lazim
Pangkalan data manakah yang disokong?
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 dan Couchbase N1QL.
Adakah pemformatan akan mengubah apa yang pertanyaan saya lakukan?
Ia sepatutnya tidak: hanya ruang kosong dan, jika dipilih, perubahan huruf besar/kecil kata kunci. Huruf besar/kecil kata kunci tidak memberi kesan dalam SQL. Walau bagaimanapun, semak output yang dijana sebelum menjalankannya pada data pengeluaran, terutamanya untuk ciri dialek yang luar biasa.
Mengapa saya mendapat “tidak dapat diformat”?
Tokenizer menemui sesuatu yang tidak dapat diletakkan, selalunya kurungan atau tanda petik yang tidak ditutup, atau sintaks daripada dialek yang berbeza. Semak baris dan lajur dalam mesej dan pastikan dialek yang dipilih sepadan dengan pangkalan data anda.
Adakah ia mengesahkan SQL saya?
Tidak. Ia tidak disambungkan ke pangkalan data dan tidak mengetahui skema anda. Pertanyaan boleh diformat tetapi masih gagal apabila anda menjalankannya.
Privasi
SQL anda diformat dalam pelayar anda menggunakan JavaScript. Ia tidak dimuat naik, disimpan atau disertakan dalam analitik, dan alat ini tidak pernah menyambung ke pangkalan data.