हम CSV का उपयोग क्यों करते रहते हैं? [बन्द है]


14

हम CSV का उपयोग क्यों करते रहते हैं?

मैंने हाल ही में स्वास्थ्य डोमेन पर काम करने के लिए एक बदलाव किया है और डेटा ट्रांसफर मानकों में अद्भुत काम के बावजूद, सभी डेटा ट्रांसफर CSV में है , दोनों बाहरी संगठनों को रिपोर्ट करने के लिए, और नए सिस्टम को लागू करते समय डेटा माइग्रेशन के लिए।

दुर्भाग्य से CSV का उपयोग डेवलपर समय के समान बर्बादी के साथ, एक ही बेवकूफ त्रुटियों की अंतहीन पुनरावृत्ति का कारण है। (खराब भागने, अशक्त क्षेत्रों को संभालने में विफल)

मुझे पता है कि हम बेहतर कर सकते हैं, और JSON और XML (उदाहरण के आधार पर) के बीच कुछ भी ठीक होगा। (अधिकांश समय यह डेटा एक MS SQLserver 2005 से दूसरे में जा रहा है!)

मुझे लगता है कि हर बार जब मैं ऐसा होता देख रहा हूं तो मैं सचमुच एक डेवलपर बर्बाद माताओं के समय को देख रहा हूं।

तो हम क्यों एक-दूसरे से किनारा करते रहते हैं? हम कब रुकेंगे?


20
यदि आप स्वास्थ्य क्षेत्र में बस जा रहे हैं और आपको लगता है कि CSV खराब है ... तो तब तक प्रतीक्षा करें जब तक कि आप HL7 में न चलें!
21

3
@ ग्रे लोल, उसे डराओ मत, आश्चर्य हमेशा सबसे अच्छा होता है :)
जेम्स लव

47
-1 यह सीएसवी के कारण नहीं होने वाली समस्याओं के खिलाफ सीएसवी विरोधी है। अगर आप पढ़ते हैं और बिना किसी लाइब्रेरी के XML लिखते हैं तो आपको क्या लगता है? आपकी समस्याएं सौ गुना बदतर होंगी।
जेसी मिलिकन

12
"तो हम क्यों एक-दूसरे से किनारा करते रहते हैं? हम कब रुकेंगे?" मुझे पता नहीं है, जहां मैं काम करता हूं, हम बिना किसी को ठीक किए सीएसवी का उपयोग करने का प्रबंधन करते हैं (वास्तव में - यह एक्सएमएल चरण है जो कहीं अधिक निराशाजनक है)। शायद आप और आपके सहकर्मी कुछ गलत कर रहे हैं?
FrustratedWithFormsDesigner

3
अब तक की चर्चा में सभी CSV के साथ एक बहुत ही वास्तविक समस्या को याद करते हैं: डेटा में सीमांकक चरित्र प्रकट होने की संभावना है, और CSV उस मुद्दे पर कम से कम-इष्टतम दृष्टिकोण लेता है (डेटा के चारों ओर उद्धरण डालकर समस्या को नीचे की ओर धकेलता है) । पाइप-सीमांकित फ़ाइलों का उपयोग करने के लिए एक बेहतर दृष्टिकोण होगा।
लैरी कोलमैन

जवाबों:


10

आपके मामले में, ऐसा लगता है कि CSV हार्ड स्पेसिफिकेशन की कमी के कारण अच्छा नहीं है।

गैर-तुच्छ डेटा के लिए यह सही विकल्प नहीं है।

क्यों / कब CSV एक अच्छा विकल्प है? संभवतः उल्लेख करने के लिए बहुत सारे उदाहरण, फ्लैट डेटा के लिए सादगी के लाभ स्पष्ट हैं। जब तक डेटा को साफ किया जाता है / ठीक से बच जाता है तब तक कोई समस्या नहीं होती है। आम तौर पर बोलते हुए, ये सभी मामले सरल / तुच्छ होंगे। बेशक, CSV के साथ काम करते समय सामग्री में दिखने वाला मानक सीमांकक अक्सर दर्द होता है।

लेकिन अगर आप एक एक्सेल शीट या किसी अन्य समान उपयोग के मामले से डेटा भेजने के लिए एक गैर-तकनीकी ग्राहक प्राप्त करने से अधिक कुछ कर रहे हैं, तो CSV संभवतः किसी भी गंभीर उपयोग के लिए अपर्याप्त है।

XML एक बेहतर फिट है (हाँ JSON से भी अधिक) क्योंकि आप इसके लिए विस्तृत मानकीकृत स्कीमा विनिर्देश करने में सक्षम हैं। (यह उल्लेख नहीं है कि चश्मा / स्कीमा कई कार्यान्वयन शैलियों के लचीलेपन का आनंद लेते हैं, XSD, DTD और Relax NG)

बंद लूप सिस्टम के लिए, विशेष रूप से जहां बैंडविड्थ एक चिंता का विषय है, जेएसएन एक्सएमएल की तुलना में बेहतर फिट हो सकता है, लेकिन स्कीमा विनिर्देश भाषा (एस) की कमी अक्सर इसे उद्यम स्तर के अनुप्रयोगों से हटा देती है।


3
वास्तव में "जब तक डेटा ठीक से साफ / बच जाता है"। हालाँकि, कई प्रोग्रामर को यह गलत लगता है कि वे अपना खुद का (pseudo-code write('"');write(fld1);write('"');ad nauseum लिखने में) सक्षम हैं, फिर वे किसी चीज़ के बारे में उद्धरण देना भूल जाते हैं। फिर वे अपना स्वयं का पार्सर लिखते हैं ....
गेरी

3
हां, रोल-आपका अपना दल वास्तव में इस इंटरनेट चीज़ का उपयोग करना शुरू कर सकता है, शायद शब्द का अर्थ भी सीख सकता है ... लाइब्रेरी।
ओसोडो

सूचना साझा कर रहे हैं! फिर से प्रयोग करने योग्य कोड! बेवकूफ नए-नए विचार। अन्य लोगों की गलतियों को दोहराना मेरे महान ^ 50 दादाजी के लिए काफी अच्छा था, और यह मेरे लिए काफी अच्छा है!
स्टीव

@ स्टीव 314 - / मुझे "डरावनी और मनोरंजन दोनों का चेहरा बनाता है।"
21

लेकिन CSV में एक कठिन युक्ति है । हमारी समस्या अब सामान्य है - एक्सेल 100% के अनुरूप नहीं है।
gbjbaanb

63

मुझे CSV के पक्ष में कुछ बिंदु निकालने चाहिए:

  • CSV लागू करने और पार्स करने के लिए सरल (ओपी में सुझाए गए किसी भी विकल्प की तुलना में) है
  • CSV को ग्रह के लगभग हर टुकड़े (भूत और वर्तमान) से समझा जाता है
  • CSV एक बिल्कुल सपाट, सरल स्कीमा बनाता है (खेतों की एकल सूची है)
  • CSV XML, JSON, या (UGH!) HL7 (V2.x, पूर्व-एक्सएक्सएक्स) की तुलना में अधिक मानव-पठनीय है

14
आपको 'डेविल्स एडवोकेट' नहीं खेलना है ... आपके द्वारा किए गए सभी बिंदु पूरी तरह से वैध हैं और समझाते हैं कि सीएसवी अभी भी क्यों उपयोग किया जाता है। इसका सिर्फ सादा सरल है।
ग्रैंडमास्टरबी

7
@ स्टीफन: सीएसवी के कितने अलग-अलग रूप हैं आप जानते हैं?
FrustratedWithFormsDesigner

3
@FrustratedWithFormsDesigner आप कितने पलायन सम्मेलनों के बारे में सोच सकते हैं?
स्टीफन

3
@Pierre 303 काश यह बेवकूफी भरा सबूत होता। अगर यह डेवलपर सबूत होता तो मुझे खुशी होती।
स्टीफन

8
@ Pierre303, इडियट प्रूफ ... अगर आपको लगता है कि आपने 'इडियट प्रूफ' कुछ किया है, तो आपने इसे पर्याप्त बेवकूफों के साथ नहीं देखा है।
ओसोडो

29

पिछेड़ी संगतता। यदि आपकी बाहरी orgs वेब सेवा CSV को संभालती है, और आपके सभी मौजूदा उपकरण CSV को संभालते हैं, तो न तो पार्टी के पास नई सेवा में जाने के लिए कोई प्रेरणा है। आपका बाहरी अंग एक अलग प्रारूप का समर्थन क्यों शुरू करेगा? कोई भी व्यक्ति जिसके साथ वे काम करते हैं वह इसका उपयोग कर सकता है! आप एक अलग प्रारूप क्यों बनाना शुरू करेंगे? आपके द्वारा काम करने वाली कोई भी संस्था इसे स्वीकार नहीं करती है!

असली मुद्दा मैं यहाँ देखते हैं, है जिनकी वजह से आपके डेवलपर को उनके स्वयं सीएसवी कोड हर बार रोलिंग रहे हैं? यदि वे एक स्थिर, रॉक-सॉलिड CSV लाइब्रेरी का उपयोग करते हैं, तो उनके पास आपके द्वारा बताए गए मुद्दे नहीं होंगे। समस्याएँ डेवलपर्स द्वारा लाइब्रेरी का उपयोग करने के बजाय अपने स्वयं के समाधान को रोल करने के कारण होती हैं, और मैं ईमानदारी से यह नहीं देखता कि JSON या XML मैग्जीन पर जाना कैसे तय करता है। आप अभी भी लोगों को एक पुस्तकालय का उपयोग करने के बजाय उन्हें regex करने की कोशिश कर रहा होगा।


4
हर बार रोल करने के लिए +1। मैं उन डेवलपर्स को देखता हूं जो नहीं सीखते हैं, न कि त्रुटिपूर्ण डेटा प्रारूप। :-)
G__

'पश्चगामी अनुकूलता' - आप निश्चित रूप से सही हैं - लेकिन आगे नहीं बढ़ना हजारों की लागत है।
स्टीफन

अपनी खुद की CSV लाइब्रेरी को रोल करने के लिए यह ठीक है ... बस इसे फिर से उपयोग करें !
ग्रैंडमास्टरबी

5
@ स्टीफन: नहीं, आपको हर बार जरूरत पड़ने पर सीएसवी को फिर से लागू करना हजारों की लागत है। एक प्रारूप के रूप में CSV ठीक है, जो डेवलपर्स इसे ठीक नहीं कर सकते हैं वे समस्या हैं।
आनन।

6
@ स्टीफन: तो CSV के साथ आपकी समस्या यह है कि यह बहुत आसान है और आप कुछ और अधिक जटिल चाहते हैं?
आनन।

15

CSV थोड़ी तेज , आकार में छोटी , बहुत आसान है (यहां तक ​​कि एक्सेल में भी) और कई मौजूदा एप्लिकेशन इसे समझते हैं, यह एक व्यापक स्तर का मानक है

यह अभी भी कई स्थितियों में पहली पसंद है।

मैं व्यक्तिगत रूप से अभी भी उस प्रारूप को बहुत पसंद करता हूं। लेकिन मैं JSON का उपयोग करता हूं, लेकिन वेब UI जैसे अन्य अनुप्रयोगों के लिए।


1
मैं इसके हर बिट से सहमत हूं, "थोड़ा" के शुरुआती उपयोग को छोड़कर।
22

3
यह एक्सेल के साथ एक पूर्ण आधार *** rd हो सकता है यदि आपके पास डेटा है जिसे अग्रणी शून्य को बनाए रखने की आवश्यकता है .... मुझसे पूछें कि मुझे कैसे पता है! ... इसके अलावा एक्सेल एक अच्छा इंटरफ़ेस प्रदान करता है।
दाल

@ डल: मैं एक क्रेडिट यूनियन में काम करता था, और सीएसवी फाइलों से निपटना पड़ता था जिसमें क्रेडिट कार्ड नंबर होते थे। जिसके 16 अंक हैं। यह एक्सेल 15.
dan04

या इससे भी बदतर यह है कि उन्हें वैज्ञानिक संकेतन में बदल दिया। :( मुझे याद है कि पहली बार मुझे हमारे ACH प्रसंस्करण में एक त्रुटि मिली थी कि एक दूरस्थ खाता संख्या अमान्य थी, केवल यह पता लगाने के लिए कि किसी ने csv को एक्सेल में संपादित किया है (केवल एक पंक्ति को हटाने के लिए) और इसने 30 का एक गुच्छा बदल दिया था । 2.3456356e29 और ऐसे में अंकों खाता संख्या
cabbey

1
@ जीन: यदि CSV में वास्तव में JSON जैसी संख्या / स्ट्रिंग का अंतर होता है, तो एक्सेल को यह बताना काफी आसान होगा कि मान किस प्रकार के हैं। CSV के कड़े टाइप होने के कारण ये समस्याएं बहुत हैं।
dan04

15

सबसे पहले और सबसे महत्वपूर्ण, क्योंकि भले ही सीएसवी डेटा का उपभोग करना (थोड़ा) गैर-तुच्छ हो, लेकिन यह बेहद आसान है।

मैं यह भी बताना चाहूंगा कि न तो JSON और न ही XML वास्तव में सही (निर्माता या उपभोक्ता के लिए) प्राप्त करना आसान है। वास्तव में, किसी को यह जानने के लिए मुश्किल से चारों ओर देखना पड़ता है कि बहुत से लोग XML डेटा को पार्स करने के लिए रीगेक्स का उपयोग करने की कोशिश करते हैं, हालांकि यह बिल्कुल कोई सवाल नहीं है कि ऐसा करना और काम नहीं करेगा।

CSV कैन (और क्या) के साथ उत्पन्न होने वाली (और क्या) अधिकांश समस्याएं जेन्सन और एक्सएमएल दोनों के साथ भी उत्पन्न हो सकती हैं। एक्सएमएल, विशेष रूप से, अपनी खुद की कई और संभावित समस्याओं को जोड़ता है। XML डेटा को पार्स करने के लिए एक पुस्तकालय आम तौर पर सीएसवी डेटा के लिए एक समान पुस्तकालय की तुलना में बड़ा, धीमा और अधिक कठिन होता है।


1
प्रदर्शित होने इसे सही ढंग से निर्माण करने के लिए, बहुत आसान है लेने वाली कुछ है कि अभाव है आप गैर तुच्छ डेटा है जब एक कल्पना गैर तुच्छ है।
स्टीफन

2
@ स्टीफन: ध्यान दें कि मैंने उस पहले वाक्य में "सही ढंग से" शामिल नहीं किया था । इसका चूक जानबूझकर था!
जेरी कॉफिन

4

पहले, मैं मानता हूं कि प्रारूप के साथ कुछ बहुत ही वास्तविक समस्याएं हैं:

  • यह कड़ाई से टाइप किया गया है।
    • पाठ और संख्यात्मक मूल्यों के बीच कोई अंतर नहीं होने से, एक्सेल गलत अनुमान लगाएगा और आपके पोस्टल कोड और क्रेडिट कार्ड नंबर को स्क्रू करेगा।
    • बाइनरी डेटा का प्रतिनिधित्व करने के लिए कोई मानक तरीका नहीं है।
    • CSV फ़ाइलों को SQL डेटाबेस में आयात करते समय कोई अंतर नहीं है , जो कि NULLऔर के बीच अंतर करने के लिए कोई मानक तरीका नहीं है ''
  • "विशेष पात्रों" के लिए खराब समर्थन।
    • संख्यात्मक चरित्र संदर्भों की कमी (XML &#xNNNN;या JSON \uNNNN) का अर्थ है कि नियंत्रण वर्ण या गैर-ASCII वर्णों का प्रतिनिधित्व करने का कोई मानक तरीका नहीं है।
    • कई कार्यान्वयन एक क्षेत्र के भीतर लाइन ब्रेक को ठीक से लागू नहीं करते हैं।
  • एक मानक की कमी। नहीं है आरएफसी 4180 है, लेकिन उसे वैश्विक रूप से पालन नहीं किया है।

लेकिन दूसरी ओर:

  • विकल्प बदतर हैं। JSON और XML, पेड़ों के चारों ओर डिज़ाइन किए जा रहे हैं, विशेष रूप से तालिका-आधारित डेटा के लिए एक खराब फिट हैं ...
  • सघनता! एक्सएमएल में, आप एक स्टार्ट टैग और और के लिए अंत टैग करना होगा प्रत्येक में स्तंभ प्रत्येक पंक्ति। CSV में, आप केवल एक बार कॉलम हेडर लिखते हैं।
  • CSV उत्पन्न करना बहुत आसान है।
  • गैर-प्रोग्रामर एक्सेल में CSV फाइलें खोल सकते हैं।

उलटे हुए; एक्सेल में इस डेटा का उपयोग करना एक अपमानजनक अपराध होगा, CSV बुरी तरह से उत्पन्न करना आसान है, कॉम्पैक्टनेस कोई समस्या नहीं है, पेड़ इस डेटा के लिए एक बेहतर फिट हैं।
स्टीफन

4

क्योंकि बहुत सारे विश्लेषक एक्सेल का उपयोग करते हैं (पिवट टेबल और ऐसे के लिए), और यह सीएसवी को आउटपुट करने के लिए बहुत आसान है, जो आउटपुट एक्सेल प्रारूप के मुकाबले है।

फुटनोट: एक्सेल सीएसवी फ़ाइलों को संभालने के साथ मैंने कितनी समस्याएं देखीं, जैसे कि अग्रणी शून्य को निकालना और सटीक खोना, यह शायद आसान होने का एक गलत अर्थ है।


यह +1000। एक्सेल डेटा के त्वरित और गंदे विश्लेषण के लिए हत्यारा आवेदन है (एक बार जब आप इसे जानते हैं)। एक्सेल को निर्यात करने में सक्षम होने से व्यापार, अनुसंधान आदि में गैर-डेवलपर्स को ताकतवर शक्तियां मिलती हैं, एक्सेल दुनिया को चलाता है। CSV निर्यात एक्सेल चलाता है।
जोहान्स

2

यदि CSV में कोई एक चीज़ गलत है, तो यह है कि CSV इतनी सरल प्रतीत होती है कि कई डेवलपर अपने पार्सर्स / लेखकों का आविष्कार करने की कोशिश करते हैं और बाद में सही ढंग से भागने से बचने के लिए CSV को दोष देते हैं। एक अच्छे CSV पार्सर के साथ (कई अच्छे हैं), वहाँ कोई समस्या नहीं होगी।

कुछ ने उल्लेख किया कि CSV गैर-तुच्छ डेटा के लिए अच्छा नहीं है, लेकिन मैं सहमत नहीं हूं। XML गैर-तुच्छ डेटा की अनुमति देता है क्योंकि विभिन्न डेटा सेट को अलग-अलग "कंटेनर" टैग में रखा जा सकता है। CSV के साथ, आप एक ही प्रभाव को प्राप्त करने के लिए हमेशा अलग-अलग फ़ाइलों में अलग-अलग डेटा रख सकते हैं।

इसके अलावा, मेरी राय में, डेटा ट्रांसफर के लिए एक्सएमएल का उपयोग करना मूल रूप से एक्सएमएल के उद्देश्य के खिलाफ जाता है - डेटा ट्रांसफर आमतौर पर प्रदाताओं और उपभोक्ताओं के बीच एक स्थिर अनुबंध होता है, जबकि एक्सएमएल का मतलब होता है एक्सपेंडेबल इंफॉर्मेशन सब्जेक्ट को इंटरप्रिटेशन करने के लिए जब उसका उपभोग किया जाए।


1

मुझे लगता है कि CSV केवल तभी अच्छा होता है जब आपके पास केवल सरल पाठ डेटा होता है, जिसमें केवल अल्पविराम और अंत में अर्धविराम / समाप्ति रेखा होती है।

वृक्ष आर्किटेक्चर डेटा या कंपोजिट डेटा का उपयोग शायद ही सीएसवी के साथ किया जा सकता है।

CSV एक्सेल में पाठ का एक सादा 2 डी सरणी है, ज्यादा कुछ नहीं ...


1

यह वास्तव में मेनफ्रेम और एक्सेल के बारे में है।

मेनफ्रेम क्योंकि उन पुराने सिस्टम का पता लगा कि सीएसवी का उपयोग करके कैसे संवाद किया जाए। तो डेटा को डंप करने वाले बड़े ऐप इसे पढ़ और लिख सकते हैं और अब बदलने का कोई कारण नहीं है।

एक्सेल क्योंकि यह सीधे CSV खोल सकता है। वास्तव में, जब आप इसे स्थापित करते हैं तो यह .csv एक्सटेंशन पर ले जाता है। उपयोगकर्ता केवल थोड़े मज़ेदार दिखने वाले एक्सेल आइकन पर क्लिक करते हैं और यह खुलता है और एक अच्छा ग्रिड बनाता है जिससे वे घूम सकते हैं।

एक्सएमएल के आधुनिक संस्करण एक्सएमएल को सीधे पढ़ने में सक्षम हैं। लेकिन ऐसा करने के लिए, एक उपयोगकर्ता को थोड़ा और समझना होगा कि "उस तस्वीर पर डबल क्लिक करें।" और सही चित्र पर डबल क्लिक करना कुछ उद्योगों में पूछने के लिए बहुत अधिक हो सकता है। । ।


-1

मैंने बहुत से तकनीकी उत्तर देखे हैं, लेकिन मुझे संदेह है कि लोग CSV का उपयोग करने का कारण बताते हैं, यही कारण है कि लोग बहुत सी अन्य तकनीकों / तकनीकों का उपयोग करते हैं: क्योंकि यह वही है जिससे वे सबसे अधिक परिचित हैं


-1

मैं इसका उपयोग क्यों करूं?

  1. ग्राहक यह चाहता है
  2. यह नेटवर्क पर xml से अधिक तेज़ है (छोटा नेटवर्क लोड)
  3. डेटा को प्राप्त करने के लिए और अधिक जटिल की आवश्यकता नहीं है
  4. पार मंच
  5. मानव पठनीय
  6. इसके लिए पाठकों और लेखकों को लागू करना आसान है

आदि आदि।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.