Pemformat SQL

Ubah SQL satu baris yang tak terbaca menjadi kueri dengan indentasi rapi — 18 dialek, semuanya di browser Anda.

Cara menggunakan

  1. Tempel SQL Anda di kolom masukan: satu kueri, sebuah stored procedure, atau seluruh berkas migrasi. "Muat contoh berantakan" mengisi kolomnya dengan kueri yang sengaja dibuat buruk.
  2. Pilih dialek yang dipakai basis data Anda — PostgreSQL, MySQL, SQL Server, dan lima belas lainnya menerima sintaks yang ditolak Standard SQL — lalu pilih format huruf kata kunci dan indentasi yang Anda gunakan.
  3. Klik "Format SQL", lalu salin hasilnya atau unduh berkas .sql — kuerinya tidak pernah diunggah.

Tentang alat ini

SQL jarang datang dalam keadaan mudah dibaca: satu baris tanpa ujung dari sebuah ORM, semua kata kunci huruf kecil di log kueri lambat, indentasi yang hancur gara-gara klien obrolan. Merapikannya dengan tangan sebelum Anda bisa membacanya saja sudah menghabiskan sepuluh menit — padahal justru di bagian membaca itulah bug-nya berada: kondisi join yang diam-diam berubah menjadi filter, sebuah OR yang mengikat lebih luas daripada dugaan penulisnya, subkueri tiga tingkat dalam. Tempel di sini dan ia kembali dengan satu klausa per baris, sarang yang tersusun rapi, dan kata kunci dalam format huruf yang Anda pilih.

Pekerjaannya dilakukan oleh parser sungguhan, bukan tumpukan ekspresi reguler. Kuerinya ditokenisasi, dipahami sebagai pohon klausa, lalu dicetak ulang — itulah sebabnya komentar tetap berada di baris tempat ia ditulis, literal string tetap utuh bahkan ketika memuat kata seperti SELECT atau FROM, dan sebuah window function mempertahankan blok OVER (PARTITION BY … ORDER BY …)-nya dalam sarang yang benar. Delapan belas dialek tersedia — Standard SQL, PostgreSQL, MySQL, MariaDB, SQLite, SQL Server (T-SQL), Oracle PL/SQL, BigQuery, Snowflake, Redshift, Spark, Trino, Hive, Db2, Db2 for i, TiDB, SingleStore, dan N1QL — dan pilihan itu bukan sekadar hiasan: dollar-quoting PostgreSQL ($$body$$) dan kurung siku T-SQL ([dbo].[table]) adalah galat parse di bawah Standard SQL dan diformat sempurna dengan dialek yang tepat. Placeholder seperti ?, :name, $1, dan @name dikenali di setiap dialek dan diteruskan apa adanya, jadi SQL yang disalin langsung dari log kueri tidak jadi berantakan.

Dua batasan yang perlu dikatakan terus terang. Pemformat ini hanya memeriksa bahwa teksnya secara tata bahasa merupakan SQL yang sah untuk dialek yang dipilih: ia tidak tahu apa pun tentang tabel Anda, jadi ia tetap akan memformat kueri yang merujuk kolom yang tidak ada, dan ia tidak pernah menjalankan apa pun. Bila teksnya tidak dapat diurai, ia memberi tahu di mana parser menyerah, lengkap dengan baris dan kolomnya, alih-alih mengembalikan kekacauan setengah jadi. Privasi adalah alasan untuk memformat di sini ketimbang di situs sembarangan: kueri produksi membawa nama tabel, logika bisnis, dan kadang data pribadi. Pustakanya (sql-formatter, lisensi MIT, disajikan dari vai.la dan hanya diunduh saat Anda memformat pertama kali) berjalan di dalam browser Anda.

Pertanyaan yang sering diajukan

Apakah SQL saya keluar dari browser?

Tidak. Kuerinya diurai dan dicetak ulang oleh JavaScript di perangkat Anda sendiri — tidak ada yang diunggah, dicatat, atau disimpan. Itu penting, karena kueri sungguhan menyingkap skema Anda, aturan bisnis Anda, dan kadang data pribadi yang terselip di dalam literal. Setelah pemformatan pertama, Anda bisa memutus koneksi internet dan alat ini tetap berfungsi.

Dialek mana yang harus saya pilih?

Yang dipakai basis data Anda. Standard SQL mencakup sebagian besar kueri biasa, tetapi sintaks khas satu basis data membutuhkan dialek yang sesuai: [kurung siku] butuh SQL Server (T-SQL), $$dollar quoting$$ butuh PostgreSQL. Galat parse pada SQL yang sebenarnya sah biasanya beres dengan mengganti dialeknya.

Bisakah pemformatan mengubah apa yang dilakukan kueri saya?

Tidak. Hanya spasi, pergantian baris, dan format huruf kata kunci yang berubah. Pengenal, literal string, angka, dan komentar kembali persis seperti yang diketik, jadi kueri yang sudah diformat setara dengan aslinya.

Kenapa muncul pesan bahwa SQL saya tidak dapat diurai?

Karena parser menemui sesuatu yang tidak cocok dengan tata bahasanya, pada baris dan kolom yang ditampilkan. Tiga penyebab yang biasa: salah ketik seperti koma, tanda kutip, atau tanda kurung yang hilang; potongan yang bukan pernyataan utuh; atau sintaks khas satu basis data dengan dialek yang salah dipilih.

Apakah alat ini menangani placeholder dari ORM atau prepared statement?

Ya. Placeholder posisional (?), bernomor ($1), dan bernama (:name, @name) dikenali di setiap dialek dan dicetak kembali tanpa perubahan, jadi Anda bisa menempel langsung dari log kueri atau keluaran debug sebuah framework.

Bisakah saya memformat seluruh berkas migrasi?

Bisa. Pernyataan yang dipisahkan titik koma diformat satu demi satu, dengan satu baris kosong di antaranya. Masukan dibatasi 300.000 karakter agar halaman tidak pernah membeku; lebih dari itu, pecah berkasnya.

Alat terkait

Tautan panjang? Perpendek secara gratis

Vai.la mengubah URL apa pun menjadi tautan pendek dengan statistik klik, QR Code, dan biolink Anda sendiri.

Vai.la tidak bertanggung jawab atas cara alat-alat ini digunakan maupun atas keputusan yang diambil berdasarkan hasilnya.