Apa Itu Alat Ini?
Mengisi database uji, memuat hasil ekspor spreadsheet ke dalam tabel, atau memigrasikan dataset kecil sering dimulai dengan cara yang sama: Anda punya file CSV dan butuh SQL. Tool ini mengurai CSV Anda (menggunakan baris header sebagai nama kolom) dan membangun satu pernyataan INSERT INTO yang mencakup semua baris data, siap ditempel ke klien database.
Nilai string dibungkus dalam tanda kutip tunggal, dengan tanda kutip internal di-escape dengan menggandakannya (sehingga O'Brien menjadi O''Brien), aturan escaping standar yang digunakan bersama oleh MySQL, PostgreSQL, dan SQLite. Sel CSV kosong ditulis sebagai kata kunci SQL NULL, bukan string kosong — ini adalah pilihan yang disengaja, karena sel kosong dalam spreadsheet biasanya berarti "tidak ada nilai" bukan "teks kosong", dan NULL adalah yang diharapkan sebagian besar skema untuk kasus itu.
Apakah sebuah nilai diberi tanda kutip atau tidak ditentukan oleh heuristik sederhana, bukan inferensi tipe sesungguhnya: jika sel yang sudah di-trim terlihat seperti bilangan bulat atau desimal murni (opsional dengan tanda minus di depan), ditulis tanpa tanda kutip; selain itu — termasuk nilai yang hanya menyerupai angka tapi memiliki karakter tambahan, seperti kode pos dengan nol di depan — diberi tanda kutip sebagai teks. Ini menjaga hasilnya tetap jujur: cocok sebagai titik awal yang baik untuk impor kecil, bukan pengganti validasi data Anda terhadap skema tabel sebenarnya sebelum menjalankannya.
Sumber: penguraian CSV mengikuti RFC 4180, hal yang paling mendekati standar CSV formal; penggandaan tanda kutip tunggal untuk escaping string adalah konvensi bersama yang didokumentasikan oleh MySQL, PostgreSQL, dan SQLite.
Mengapa Menggunakannya?
- Nama tabel dapat disesuaikan — atur sekali, dan setiap baris menargetkan tabel tersebut.
- Escaping string yang benar — tanda kutip tunggal di dalam nilai digandakan sehingga SQL tidak rusak atau terpotong.
- Penanganan NULL yang dapat diprediksi — sel kosong menjadi NULL alih-alih string kosong, sesuai dengan cara sebagian besar database membedakan data yang hilang.
- Sintaks SQL umum — INSERT INTO ... VALUES ... yang dihasilkan di sini berfungsi tanpa modifikasi di MySQL, PostgreSQL, dan SQLite.
- 100% client-side — data CSV Anda (yang mungkin berisi catatan pelanggan atau data bisnis) diurai dan dikonversi di browser Anda dan tidak pernah diunggah ke mana pun.
Cara Menggunakan
- Tempel data CSV dengan baris header, misalnya name,age\nAlice,30\nBob,25.
- Masukkan nama tabel target (default my_table).
- Klik "Buat SQL".
- Salin pernyataan INSERT INTO atau unduh sebagai file .sql, lalu jalankan pada database Anda.
Contoh
Input
name,age,city
Alice,30,
Bob,,NYCOutput
INSERT INTO `my_table` (`name`, `age`, `city`)
VALUES
('Alice', 30, NULL),
('Bob', NULL, 'NYC');Perhatikan bagaimana sel kosong menjadi NULL (bukan string kosong), dan nilai age yang terlihat seperti angka 30 tetap tanpa tanda kutip sementara setiap nilai teks diberi tanda kutip.
Tips praktis
- Mengisi database uji lokal: ekspor sampel kecil sebagai CSV dari spreadsheet, konversi di sini, dan jalankan pernyataan INSERT pada database pengembangan Anda.
- Selalu tinjau tipe kolom sebelum menjalankan SQL yang dihasilkan pada tabel sungguhan — tool ini menyimpulkan numerik vs. teks dengan heuristik sederhana, bukan skema Anda yang sebenarnya, jadi kolom integer yang mengharapkan format tertentu mungkin memerlukan penyesuaian manual.
- Jika Anda memiliki ribuan baris, satu pernyataan INSERT multi-baris yang dihasilkan tool ini tetap SQL yang valid, tetapi pernyataan yang sangat besar bisa melampaui ukuran paket maksimum database — pecah CSV menjadi batch yang lebih kecil terlebih dahulu jika Anda mengalami batasan tersebut.
Mengapa NULL dan bukan string kosong
Kesalahan umum saat menulis skrip CSV ke SQL secara manual adalah memperlakukan setiap sel yang hilang sebagai string kosong ''. Itu secara teknis SQL yang valid, tapi biasanya tidak berarti apa yang Anda inginkan: kolom yang didefinisikan sebagai integer akan menolak '' secara langsung, dan bahkan dalam kolom teks, '' secara diam-diam berarti sesuatu yang berbeda dari "kami tidak tahu nilai ini" dalam sebagian besar desain skema dan query pelaporan (pemeriksaan WHERE column IS NULL tidak akan cocok dengan string kosong, dan sebaliknya). Menggunakan NULL untuk sel kosong sesuai dengan semantik yang diharapkan sebagian besar database dan ORM, dan menghindari error tipe ketika kolom numerik kebetulan memiliki nilai yang hilang di beberapa baris.
Pertanyaan yang Sering Diajukan
Apakah ini berfungsi dengan semua database SQL?
Sintaks yang dihasilkan — identifier dengan tanda kutip backtick, nilai teks dengan tanda kutip tunggal, INSERT INTO ... VALUES ... standar — umum di MySQL, PostgreSQL, dan SQLite. PostgreSQL secara ketat tidak mengharuskan backtick di sekitar identifier (menggunakan tanda kutip ganda jika perlu tanda kutip sama sekali), tetapi nama dengan backtick juga tidak menimbulkan masalah di sana, selama Anda tidak memiliki nama kolom tidak biasa yang bertabrakan dengan kata kunci yang dicadangkan. Tidak ada satu pun standar SQL resmi yang diikuti di sini — hanya sintaks yang berfungsi tanpa modifikasi di database yang paling umum.
Mengapa sel kosong menjadi NULL alih-alih string kosong ''?
Ini adalah pilihan desain yang disengaja: dalam sebagian besar ekspor CSV dunia nyata, sel kosong berarti nilainya tidak diketahui atau tidak berlaku, bukan secara harfiah teks kosong. NULL adalah yang diharapkan sebagian besar skema database untuk itu. Jika kasus penggunaan Anda benar-benar membutuhkan string kosong, Anda perlu mengedit SQL yang dihasilkan secara manual untuk kasus-kasus tersebut.
Bagaimana tool ini memutuskan apakah sebuah nilai perlu tanda kutip?
Ini adalah heuristik sederhana, bukan inferensi tipe sesungguhnya: jika sel yang sudah di-trim hanya terdiri dari digit (dengan opsional tanda minus di depan dan paling banyak satu titik desimal), ditulis tanpa tanda kutip sebagai angka. Selain itu diberi tanda kutip sebagai teks. Ini berarti kode pos seperti 00501 atau nomor telepon akan diperlakukan sebagai teks hanya jika memiliki karakter tambahan — nol di depan saja masih diuraikan sebagai angka di sini, jadi periksa kembali identifier seperti kode pos dan ID sebelum menjalankan SQL.
Apakah data saya diunggah ke suatu tempat?
Tidak. Baik penguraian maupun pembuatan SQL terjadi dalam JavaScript di browser Anda — tidak ada yang dikirim ke server, sehingga aman digunakan dengan catatan pelanggan atau bisnis yang diekspor.
Bisakah menangani nilai CSV yang mengandung koma atau tanda kutip?
Ya. CSV diurai dengan parser field bertanda kutip yang tepat, yang memahami koma, jeda baris, dan tanda kutip ganda di dalam field bertanda kutip — bukan sekadar pemisahan koma sederhana — sehingga field seperti "Smith, John" dibaca sebagai satu nilai, tidak dipecah menjadi dua kolom.