Friends CSV में export करने नहीं देते

CSV क्यों अब भी dominant है

  • सार्वभौमिक रूप से समर्थित: लगभग हर business tool, database, और language CSV को import/export कर सकती है, अक्सर बिना किसी extra libraries के।
  • गैर-तकनीकी उपयोगकर्ताओं के लिए काम आता है: लोग “export/import CSV” और “open in Excel/Sheets” जानते हैं; कई workflows, FOIA responses, और legacy systems इसके आसपास बने हैं।
  • छोटे या मध्यम files के लिए देखना और हाथ से edit करना आसान है। integrations और “one broken file” incidents debug करने में यह critical है।
  • मध्यम data sizes (MBs से low GBs) के लिए performance आम तौर पर पर्याप्त अच्छी होती है, खासकर जब zipped हो।

CSV की व्यावहारिक समस्याएँ

  • अस्पष्ट “family” of formats: अलग-अलग delimiters (,, ;, \t, |), quoting rules, header की मौजूदगी, encodings (UTF‑8 vs legacy), decimal separators, date formats, और null representations।
  • वास्तविक दुनिया की files अक्सर RFC 4180 का उल्लंघन करती हैं: inconsistent quoting, गलत escaping, comments, misaligned rows, fields में nested CSV। “सभी CSVs” के लिए एक single robust parser व्यावहारिक रूप से असंभव है।
  • locale और Excel की समस्याएँ: Excel locale के आधार पर separator बदलता है, types का अनुमान लगाता है, IDs को numbers/dates/scientific notation में बदल देता है, leading zeros हटा देता है, और save करने पर चुपचाप data corrupt कर सकता है। LibreOffice को अक्सर अधिक sane बताया जाता है।
  • encoding और schema out-of-band होते हैं; consumers को types और formats का अनुमान लगाना पड़ता है, जिससे subtle bugs पैदा होते हैं।

“Human readable” पर बहस

  • Pro: Human readability को एक बड़ा virtue माना जाता है। आप बिना code के data inspect, diff, और surgically fix कर सकते हैं। CSV को durable और future-proof माना जाता है।
  • Con: Human readability ad-hoc, buggy producers (“बस commas से जोड़ दो”) को बढ़ावा देती है, जिससे interoperability और खराब होती है। कुछ लोग कहते हैं binary + अच्छे tools, text + misuse से बेहतर है।

Parquet और अन्य alternatives

  • Data pipelines के लिए Parquet की प्रशंसा की जाती है: columnar, typed, schema-aware, बड़े datasets और partial reads के लिए efficient; अच्छी तरह compress होता है (csv.gz के तुल्य)।
  • आलोचनाएँ: अधिक complex spec, कुछ languages/environments में spotty या painful library support, version quirks, Excel में सीधे उपयोग योग्य नहीं, और row-streaming use cases के लिए आदर्श नहीं।
  • अन्य सुझाए गए formats: SQLite files, Arrow, Avro, Protobuf/Cap’n Proto, JSON/NDJSON, TSV, schema के साथ XML, CSVY (CSV + YAML metadata), और समर्पित delimiter characters का उपयोग करने वाले “Unicode/ASCII separated values”。

CSV कब उपयुक्त है और कब नहीं

  • व्यापक रूप से सहमति:
    • बाहरी stakeholders और spreadsheets में ad-hoc analysis के लिए CSV (या XLSX) रखें।
    • उन internal, बड़े, या performance-sensitive pipelines के लिए Parquet/SQLite/Arrow/etc. पर विचार करें जहाँ आप दोनों ends नियंत्रित करते हैं।
  • मुख्य तनाव: CSV तकनीकी रूप से fragile है लेकिन सामाजिक रूप से entrenched है। बहुत से लोग इसे बड़े scale पर बदलना अव्यावहारिक मानते हैं; दूसरे तर्क देते हैं कि कम-से-कम इसे “serious” system-to-system integration के लिए default के रूप में इस्तेमाल करना बंद कर देना चाहिए।