Tidak ada yang salah dengan CSV hingga titik tertentu
CSV bekerja dengan baik untuk data yang didefinisikan secara kaku yang tidak mungkin berubah format dan tidak menimbulkan banyak kejutan pada parser penerima.
Berikut daftar praktis dari gotcha besar:
- Melarikan diri "" di dalam "" (bidang berisi pembatas bidang)
- "" mengandung CRLF (bidang berisi pembatas baris)
- Unicode (format teks yang mendasarinya mungkin tidak cukup)
- Terminator saluran yang berbeda untuk OS yang berbeda (apakah CR atau CRLF atau LF atau NUL?)
- Komentar sebaris (baris diawali dengan #, //, -,; dll)
- Manajemen versi (versi terbaru file berisi lebih atau kurang bidang)
- Membedakan antara NULL dan data kosong (, "", kosong tapi ,, apakah nol?)
Anda bisa mendekati ini dengan header meta-data yang menjelaskan bagaimana bidang harus diurai, tetapi Anda juga bisa menggunakan XML. Ini karena jenis kekacauan CSV bentuk bebas yang diciptakan. Pendekatan XML sepertinya terlalu berat untuk apa yang bisa, pada kenyataannya, menjadi masalah sederhana.
Alternatif yang populer adalah strategi "pembatas karakter aneh". Ini mengatasi banyak masalah pelolosan di atas karena Anda menggunakan sesuatu seperti | (pipa) karakter untuk pembatas lapangan, dan CRLF untuk penghentian rekaman. Ini tidak mengatasi masalah bidang multi-garis (kecuali jika Anda menggunakan penghitung bidang) tetapi Anda mendapatkan garis yang diformat dengan baik untuk manusia.
Secara keseluruhan, jika Anda hanya mencari cara sederhana untuk menangani file semacam ini maka, di dunia Java, Anda bisa melempar OpenCSV padanya. Dengan begitu Anda memisahkan semua masalah ke dalam kerangka kerja yang sudah ada.