Mengapa kita terus menggunakan CSV? [Tutup]

13

Mengapa kita terus menggunakan CSV?

Baru-baru ini saya membuat perubahan untuk bekerja di domain kesehatan dan meskipun pekerjaan yang luar biasa dalam standar transfer data, semua transfer data dalam CSV , baik untuk pelaporan ke organisasi eksternal, dan untuk migrasi data ketika menerapkan sistem baru.

Sayangnya penggunaan CSV adalah penyebab pengulangan tanpa akhir dari kesalahan bodoh yang sama, dengan waktu pengembang yang sama. (melarikan diri dengan buruk, gagal menangani bidang nol, dll.)

Saya tahu kita bisa melakukan yang lebih baik, dan apa pun antara JSON dan XML (tergantung pada instance) akan baik-baik saja. (Sebagian besar waktu ini adalah data dari satu MS SQLserver 2005 ke yang lain!)

Saya merasa seolah-olah setiap kali saya melihat ini terjadi, saya benar-benar menonton satu pengembang membuang waktu.

Jadi mengapa kita terus saling shafting? Kapan kita akan berhenti?

Stephen
sumber
20
Jika Anda baru saja masuk ke domain kesehatan dan Anda pikir CSV buruk ... tunggu sampai Anda mengalami HL7!
G__
3
@Greg LOL, jangan menakuti dia, kejutan selalu yang terbaik :)
James Love
47
-1 Ini adalah kata-kata kasar anti-CSV terhadap masalah yang tidak disebabkan oleh CSV. Menurut Anda apa yang sebenarnya akan terjadi jika Anda membaca dan menulis XML tanpa perpustakaan? Masalah Anda akan seratus kali lebih buruk.
Jesse Millikan
12
"Jadi mengapa kita terus saling shafting? Kapan kita akan berhenti?" Saya tidak tahu, di mana saya bekerja, kami berhasil menggunakan CSV dengan baik tanpa ada yang terjebak (memang - ini adalah tahap XML yang jauh lebih membuat frustrasi). Mungkin Anda dan rekan kerja Anda melakukan kesalahan?
FrustratedWithFormsDesigner
3
Semua diskusi sejauh ini merindukan masalah yang sangat nyata dengan CSV: karakter pembatas cenderung muncul dalam data, dan CSV mengambil pendekatan yang kurang optimal untuk masalah itu (menempatkan tanda kutip di sekitar data hanya mendorong masalah di hilir) . Pendekatan yang lebih baik adalah dengan menggunakan file yang dibatasi pipa.
Larry Coleman

Jawaban:

10

Dalam kasus Anda, sepertinya CSV tidak cocok karena kurangnya spesifikasi yang sulit.

Untuk data non-sepele itu bukan pilihan yang tepat.

Mengapa / Kapan CSV adalah pilihan yang baik? Mungkin terlalu banyak contoh untuk disebutkan, manfaat kesederhanaan untuk data datar jelas. Selama data disanitasi / lolos dengan benar tidak ada masalah. Namun secara umum, semua kasus ini akan sederhana / sepele. Tentu saja, pembatas standar yang muncul dalam konten seringkali menyebalkan ketika berhadapan dengan CSV.

Tetapi jika Anda melakukan sesuatu yang lebih terlibat daripada mendapatkan klien non-teknis untuk mengirim data dari lembar Excel atau kasus penggunaan serupa lainnya, maka CSV mungkin tidak cukup untuk penggunaan serius.

XML lebih cocok (ya bahkan lebih daripada JSON) karena Anda dapat melakukan spesifikasi skema standar terperinci untuknya. (Belum lagi bahwa spesifikasi / skema menikmati fleksibilitas dari beberapa gaya implementasi, XSD, DTD & Relax NG)

Untuk sistem loop tertutup, terutama di mana bandwidth menjadi perhatian, JSON bisa lebih cocok daripada XML, tetapi kurangnya bahasa spesifikasi skema sering menghalangi itu dari aplikasi tingkat perusahaan.

ocodo
sumber
3
Memang "Selama data disanitasi / lolos dengan benar". Namun cara untuk banyak programmer tampaknya bisa mendapatkan ini salah, menulis sendiri (dalam pseudo-code write('"');write(fld1);write('"');ad nauseum.) Kemudian mereka kehilangan menempatkan tanda kutip di sekitar sesuatu. Kemudian mereka menulis parser mereka sendiri ....
Gerry
3
Yap, kru roll-Anda-sendiri benar-benar harus mulai menggunakan internet thingy ini, bahkan mungkin belajar arti kata ... Perpustakaan.
ocodo
Berbagi informasi! kode yang dapat digunakan kembali! ide ketinggalan jaman baru bodoh. Mengulangi kesalahan orang lain sudah cukup baik untuk kakek buyut saya, dan itu cukup baik untuk saya!
Steve314
@ Steve314 - / saya "membuat wajah horor dan hiburan."
ocodo
Namun CSV memang memiliki spekikasi keras . Masalah kita sekarang adalah yang biasa - Excel tidak sesuai dengan itu 100%.
gbjbaanb
63

Biarkan saya membuang beberapa poin yang mendukung CSV:

  • CSV sederhana (r daripada alternatif apa pun yang disarankan dalam OP) untuk diimplementasikan dan diuraikan
  • CSV dipahami oleh hampir setiap perangkat lunak di planet ini (dulu dan sekarang)
  • CSV memaksa skema yang cukup datar dan sederhana (ada daftar bidang tunggal)
  • CSV lebih bisa dibaca manusia daripada XML, JSON, atau (UGH!) HL7 (V2.x, pra-xml)
G__
sumber
14
Anda tidak perlu bermain 'advokat setan' ... semua poin yang Anda buat benar-benar valid dan menjelaskan mengapa CSV masih digunakan. Sederhana saja.
GrandmasterB
7
@Stephen: Berapa banyak variasi CSV yang Anda ketahui?
FrustratedWithFormsDesigner
3
@FrustratedWithFormsDesigner berapa banyak konvensi pelarian yang bisa Anda pikirkan?
Stephen
3
@Ierre 303 Saya berharap itu bukti bodoh. Saya akan senang jika itu adalah bukti pengembang.
Stephen
8
@ Pierre303, bukti idiot ... Jika Anda berpikir Anda 'idiot membuktikan' sesuatu, Anda belum mengujinya dengan cukup idiot.
ocodo
29

Kompatibilitas mundur. Jika layanan web organisasi eksternal Anda menangani CSV, dan semua alat Anda yang ada menangani CSV, tidak ada pihak yang memiliki motivasi untuk pindah ke layanan baru. Mengapa org eksternal Anda mulai mendukung format yang berbeda? Tidak seorang pun yang bekerja dengan mereka dapat menggunakannya! Mengapa Anda mulai memproduksi format yang berbeda? Tak satu pun dari organisasi tempat Anda bekerja menerimanya!

Masalah sebenarnya yang saya lihat di sini adalah, mengapa pengembang Anda menggulirkan kode CSV mereka sendiri setiap saat? Jika mereka menggunakan pustaka CSV yang stabil dan solid, mereka tidak akan memiliki masalah yang Anda gambarkan. Masalahnya disebabkan oleh pengembang meluncurkan solusi mereka sendiri daripada menggunakan perpustakaan, dan saya jujur ​​tidak melihat bagaimana pindah ke JSON atau XML secara ajaib memperbaikinya. Anda masih memiliki orang yang mencoba meregisternya alih-alih menggunakan perpustakaan.

Segera.
sumber
4
+1 untuk bergulir sendiri setiap saat. Saya melihat pengembang yang tidak belajar, bukan format data yang cacat. :-)
G__
'kompatibilitas mundur' - Anda benar tentu saja - tetapi tidak bergerak maju harganya ribuan.
Stephen
Tidak apa-apa untuk menggulung perpustakaan CSV Anda sendiri ... cukup gunakan kembali!
GrandmasterB
5
@Stephen: Tidak, mengimplementasikan ulang CSV setiap kali Anda membutuhkan biaya ribuan. CSV sebagai format tidak masalah, pengembang yang tidak bisa memperbaikinya adalah masalahnya.
Anon.
6
@Stephen: Jadi masalah Anda dengan CSV adalah terlalu sederhana dan Anda menginginkan sesuatu yang lebih kompleks?
Anon.
15

CSV sedikit lebih cepat , lebih kecil ukurannya , sangat mudah ditangani (bahkan di Excel) dan banyak aplikasi yang ada memahaminya, ini adalah standar yang banyak digunakan .

Itu masih pilihan pertama dalam banyak situasi.

Saya pribadi masih sangat menyukai format itu. Tapi saya menggunakan JSON juga, tetapi untuk aplikasi lain seperti web UI.


sumber
1
Saya setuju dengan setiap bit ini, kecuali penggunaan awal "sedikit".
Orbling
3
Ini bisa menjadi dasar mutlak dengan Excel jika Anda memiliki data yang perlu mempertahankan nol terkemuka ... tanyakan kepada saya bagaimana saya tahu! ... selain itu Excel menyediakan antarmuka yang baik.
Dal
@ Dal: Saya dulu bekerja di credit union, dan harus berurusan dengan file CSV yang berisi nomor kartu kredit. Yang memiliki 16 digit. Excel itu dibulatkan ke 15.
dan04
Atau lebih buruk lagi, itu mengubahnya menjadi notasi ilmiah. :( Saya ingat pertama kali saya mendapatkan kesalahan kembali pada pemrosesan ACH kami bahwa nomor akun jarak jauh tidak valid, hanya untuk mengetahui seseorang telah mengedit csv di excel (hanya untuk menghapus satu baris) dan telah mengubah banyak 30 digit nomor akun menjadi 2.3456356e29 dan semacamnya.
cabbey
1
@ Jeanne: Jika CSV benar-benar memiliki perbedaan angka / string seperti JSON, akan sangat mudah untuk memberi tahu Excel jenis nilai yang mana. Masalah-masalah ini sangat banyak karena CSV sedang diketik dengan ketat.
dan04
15

Pertama dan terutama, karena walaupun mengkonsumsi data CSV bisa (sedikit) tidak mudah, menghasilkannya sangat mudah.

Saya juga menunjukkan bahwa JSON atau XML tidak mudah untuk mendapatkan yang benar (baik untuk produsen atau konsumen). Faktanya, seseorang hampir tidak perlu melihat-lihat sama sekali untuk mengetahui bahwa banyak orang mencoba menggunakan regex untuk mem-parsing data XML, meskipun sama sekali tidak ada pertanyaan bahwa hal itu tidak dapat dan tidak akan berhasil.

Sebagian besar masalah yang dapat (dan lakukan) muncul dengan CSV dapat (dan lakukan) juga muncul dengan JSON dan XML. XML, khususnya, menambahkan lebih banyak masalah potensial sendiri. Pustaka untuk mem-parsing data XML umumnya lebih besar, lebih lambat, dan lebih sulit digunakan daripada pustaka serupa untuk data CSV.

Jerry Coffin
sumber
1
tampaknya memproduksinya dengan benar sangat mudah, memakan sesuatu yang tidak memiliki spesifikasi adalah non-sepele ketika Anda memiliki data non-sepele.
Stephen
2
@Stephen: perhatikan bahwa saya tidak memasukkan "dengan benar" dalam kalimat pertama itu. Penghilangannya disengaja!
Jerry Coffin
4

Pertama, saya setuju bahwa ada beberapa masalah nyata dengan format:

  • Ini diketik dengan ketat.
    • Tanpa perbedaan antara teks dan nilai numerik, Excel akan menebak salah dan mengacaukan kode pos dan nomor kartu kredit Anda.
    • Tidak ada cara standar untuk merepresentasikan data biner.
    • Tidak ada cara standar untuk membedakan NULLdan '', yang merupakan masalah ketika mengimpor file CSV ke dalam database SQL.
  • Dukungan buruk untuk "karakter khusus".
    • Kurangnya referensi karakter numerik seperti (XML &#xNNNN;atau JSON \uNNNN) berarti tidak ada cara standar untuk mewakili karakter kontrol atau karakter non-ASCII.
    • Banyak implementasi yang tidak mengimplementasikan garis putus-putus dengan benar dalam suatu bidang.
  • Kurangnya standar. Ada RFC 4180 , tetapi tidak diikuti secara universal.

Tetapi di sisi lain:

  • Alternatifnya lebih buruk. JSON dan XML, yang dirancang di sekitar pohon, sangat tidak cocok untuk data berbasis tabel, khususnya dalam hal ...
  • KEKOMPAKAN! Dalam XML, Anda harus memiliki tag awal dan dan tag akhir untuk setiap kolom di setiap baris. Di CSV, Anda hanya menulis tajuk kolom sekali.
  • CSV sangat mudah dibuat.
  • Non-programmer dapat membuka file CSV di Excel.
dan04
sumber
kebalikan; menggunakan data ini di excel akan menjadi pelanggaran yang dapat dipecat, CSV mudah untuk menghasilkan buruk, kekompakan bukan masalah, pohon lebih cocok untuk data ini.
Stephen
4

Karena banyak analis menggunakan Excel (untuk tabel pivot dan semacamnya), dan jauh lebih mudah untuk menghasilkan CSV daripada menghasilkan format Excel asli.

Catatan Kaki: mengingat berapa banyak masalah yang saya lihat dengan Excel menangani file CSV, seperti menghapus angka nol terkemuka dan kehilangan presisi, ini mungkin merupakan perasaan salah yang lebih mudah.

Scott McIntyre
sumber
+1000 ini. Excel adalah aplikasi pembunuh (setelah Anda mengetahuinya) untuk analisis data yang cepat dan kotor. Mampu mengekspor ke Excel memberi kekuatan besar kepada non-pengembang dalam bisnis, penelitian, dll. Excel menjalankan dunia. Ekspor CSV menjalankan Excel.
johannes
2

Jika ada satu hal yang salah dengan CSV, itu adalah bahwa CSV tampak sangat sederhana sehingga banyak pengembang mencoba untuk membuat parser / penulis mereka sendiri dan kemudian menyalahkan CSV karena tidak menangani melarikan diri dengan benar. Dengan parser CSV yang bagus (banyak yang bagus di luar sana), tidak akan ada masalah sama sekali.

Seseorang menyebutkan CSV tidak baik untuk data non-sepele tapi saya tidak setuju. XML memungkinkan data non-sepele karena set data yang berbeda dapat dimasukkan ke tag "wadah" yang berbeda. Dengan CSV, Anda selalu dapat memasukkan data yang berbeda ke file yang berbeda untuk mencapai efek yang sama.

Lebih lanjut, menurut pendapat saya, menggunakan XML untuk transfer data secara fundamental bertentangan dengan tujuan XML - transfer data biasanya menyiratkan kontrak yang stabil antara penyedia dan konsumen sementara XML dimaksudkan untuk membawa informasi yang dapat diperluas, tunduk pada interpretasi ketika dikonsumsi.

Codism
sumber
1

Saya kira CSV hanya bagus ketika Anda hanya memiliki data teks sederhana, dengan hanya koma dan titik koma / endline di akhir.

Data arsitektur pohon atau data gabungan hampir tidak dapat digunakan dengan CSV.

CSV hanyalah sebuah array teks 2D biasa seperti pada excel, tidak banyak ...

jokoon
sumber
1

Ini semua tentang mainframe dan unggul di sini.

Mainframe karena sistem lama itu menemukan cara berkomunikasi menggunakan CSV. Jadi aplikasi besar yang membuang data dapat membaca dan menulisnya dan tidak punya alasan untuk mengubahnya sekarang.

Unggul karena dapat membuka CSV secara langsung. Bahkan, dibutuhkan ekstensi .csv saat Anda menginstalnya. Pengguna cukup mengklik ikon excel yang tampak sedikit lucu dan terbuka dan membuat kisi yang bagus yang bisa mereka pertengkarkan.

Sekarang, versi excel modern cukup mampu membaca, katakanlah, XML, secara langsung. Tetapi untuk melakukannya, pengguna harus memahami sedikit lebih banyak bahwa "klik dua kali pada gambar itu." Dan mengklik ganda pada gambar yang tepat bisa menjadi terlalu banyak untuk ditanyakan di beberapa industri. . .

Wyatt Barnett
sumber
-1

Saya telah melihat banyak jawaban teknis tetapi saya curiga alasan orang menggunakan CSV adalah alasan yang sama mengapa orang menggunakan banyak teknik / teknologi lain: karena itulah yang paling mereka kenal

Homde
sumber
-1

mengapa saya menggunakannya?

  1. pelanggan menginginkannya
  2. lebih cepat daripada xml melalui jaringan (beban jaringan lebih kecil)
  3. tidak ada yang lebih rumit yang dibutuhkan untuk mendapatkan data
  4. lintas platform
  5. dapat dibaca manusia
  6. mudah diterapkan pembaca dan penulis untuk itu

dll. dll

jwenting
sumber