Konversi SQL (SQL Conversion) adalah proses mengekstrak data dari skrip SQL dan mengaturnya kembali ke format data lain seperti JSON, CSV, XML, YAML, HTML, Markdown dll. SQL (Structured Query Language, bahasa query terstruktur) adalah bahasa query standar untuk database relasional, alat ekspor database (seperti mysqldump, pg_dump) biasanya mengekspor data sebagai pernyataan INSERT dalam skrip SQL, format ini meskipun nyaman untuk impor ke database, tetapi tidak nyaman untuk dibaca program, analisis data, atau pertukaran antar sistem, sehingga perlu dikonversi ke format yang lebih universal.
Skrip ekspor data SQL umum berisi dua jenis pernyataan: CREATE TABLE untuk mendefinisikan struktur tabel (nama kolom, tipe data, batasan) dan INSERT INTO ... VALUES (...) untuk menambah data spesifik. Alat ini memparse kedua jenis pernyataan, mengekstrak definisi kolom dan informasi tipe dari CREATE TABLE, baris data aktual dari INSERT, kemudian mengatur output kembali sesuai format yang dipilih pengguna. Seluruh proses parsing dilakukan secara lokal di browser, tidak bergantung pada layanan backend apa pun.
Mengapa perlu mengonversi SQL ke format lain? Skrip SQL meskipun universal, tetapi tidak nyaman dalam skenario berikut: pertama, program frontend membaca JSON jauh lebih mudah dibandingkan memparse SQL, tanpa perlu menambah parser SQL; kedua, software spreadsheet seperti Excel, Google Sheets secara native mendukung CSV bukan SQL; ketiga, dalam skenario berkas konfigurasi dan dokumentasi YAML, Markdown lebih mudah dibaca daripada SQL; keempat, pertukaran data antar sistem sering menggunakan XML atau JSON sebagai format netral. Setelah SQL dikonversi ke format universal ini, data dapat dikonsumsi langsung oleh lebih banyak alat dan bahasa.
Parser SQL alat ini ditulis tangan, berfokus pada parsing pernyataan INSERT dan CREATE TABLE. Untuk INSERT, mendukung tuple tunggal (INSERT INTO t (a,b) VALUES (1,2)) dan tuple multinilai (INSERT INTO t (a,b) VALUES (1,2), (3,4), (5,6)), otomatis memetakan data berdasarkan nama kolom. Untuk CREATE TABLE, mendukung parsing definisi kolom, tipe data (VARCHAR(255), INT, DECIMAL(10,2) dll. dengan panjang dalam kurung), batasan dan klausa NOT NULL, PRIMARY KEY, IF NOT EXISTS, menangani kurung bersarang dengan benar untuk menghindari pemisahan yang salah.
Identifikasi tipe adalah aspek kunci konversi SQL. Alat otomatis menentukan tipe berdasarkan bentuk literal nilai: nilai yang dibungkus kutipan tunggal atau ganda adalah string; NULL (tidak case-sensitive) adalah nilai kosong; TRUE/FALSE adalah boolean; 0x..., X'...', B'...' adalah literal heksadesimal; angka murni (dengan tanda minus, titik desimal, notasi ilmiah) adalah angka. Identifikasi tipe otomatis ini memastikan format konversi seperti JSON, CSV mempertahankan semantik data asli (misal angka 1 bukan string "1"), memudahkan program downstream untuk memproses dengan benar.
Perbedaan gaya kutipan antar dialek database adalah jebakan umum dalam parsing SQL. MySQL secara default menggunakan backtick (`) untuk membungkus identifier (nama tabel, nama kolom), PostgreSQL menggunakan kutipan ganda ("), SQL Server/T-SQL menggunakan kurung siku ([]), SQL standar juga menggunakan kutipan ganda. Fungsi unquoteIdentifier alat ini otomatis mengenali dan menghapus kutipan ini, sekaligus menangani escape dalam kutipan (seperti `` → `, "" → "). Dalam mode membangun ulang SQL, pernyataan INSERT dibuat ulang dengan gaya kutipan terkait untuk dialek target.
Escape string SQL adalah detail teknis penting lainnya. Standar SQL mendefinisikan escape kutipan tunggal dalam string dengan menggandakan ('It''s' mewakili It's), MySQL secara default juga mendukung escape backslash (\n, \t, \', \", \\\\, \0, \Z dll.). Parser string alat ini secara bersamaan menangani kedua mekanisme escape, memulihkan konten string asli dengan benar. Saat dikonversi ke CSV, field yang berisi koma, kutipan, newline di-escape ulang mengikuti standar RFC 4180; saat dikonversi ke XML/HTML, karakter khusus seperti &, <, >, ", ' di-escape.
Pemrosesan frontend murni adalah prinsip desain inti alat ini. Semua parsing SQL dan konversi data dilakukan dalam engine JavaScript browser, tidak mengirim data apa pun ke server. Ini berarti bahkan jika skrip SQL berisi data sensitif pengguna, informasi bisnis sensitif atau struktur database internal, tidak akan bocor ke luar. Desain ini sangat cocok untuk memproses ekspor database produksi, tanpa perlu khawatir tentang masalah kepatuhan data. Sekaligus pemrosesan frontend tidak memiliki latensi jaringan, kecepatan konversi hanya dibatasi oleh CPU dan memori perangkat.
Dibandingkan dengan alat konversi SQL command-line tradisional (seperti sql2csv, sqlparser), alat ini memiliki beberapa keunggulan: tidak perlu instalasi dan konfigurasi lingkungan, buka halaman web langsung bisa digunakan; menyediakan antarmuka visual untuk pratinjau hasil konversi real-time; mendukung konversi antara berbagai format output sekali klik; terintegrasi data contoh dan dokumentasi bantuan; desain responsif mobile untuk digunakan di mana saja. Namun alat ini berfokus pada ekstraksi data, tidak menangani perbedaan dialek SQL yang kompleks (seperti operator JSONB PostgreSQL, ON DUPLICATE KEY UPDATE MySQL) dan fitur lanjutan (stored procedure, function, trigger); jika ada kebutuhan seperti itu, disarankan menggunakan alat database native atau platform ETL khusus.
Saat menggunakan alat konversi SQL, ada beberapa praktik terbaik yang perlu diperhatikan: pertama, sebelum konversi periksa apakah skrip SQL berisi data lengkap (pernyataan INSERT) bukan hanya pernyataan query (SELECT), SELECT tidak akan di-parse; kedua, untuk skrip SQL banyak tabel, disarankan mengaktifkan «Ekspor banyak tabel terpisah» untuk mempertahankan informasi struktur tabel; ketiga, saat memproses SQL berisi karakter Tionghoa, untuk output CSV disarankan mengaktifkan «Sertakan BOM» untuk memastikan Excel mengenali encoding dengan benar; keempat, saat memproses SQL dump besar disarankan menonaktifkan «output cantik» untuk mengurangi ukuran output; kelima, saat migrasi antar database, dapat menggunakan mode «Membangun ulang SQL» untuk mengganti dialek, tetapi tipe kompleks (seperti array PostgreSQL, JSONB) mungkin perlu penyesuaian manual.