CSV के साथ कुछ भी गलत नहीं है
CSV कठोरता से परिभाषित डेटा के लिए अच्छी तरह से काम करता है जो प्रारूप बदलने की संभावना नहीं है और प्राप्तकर्ता पार्सर पर कई आश्चर्य नहीं करता है।
यहाँ बड़े गोचरों की एक आसान सूची है:
- "" S के भीतर "बचना" (फ़ील्ड में फ़ील्ड सीमांकक होता है)
- CRLFs युक्त (फ़ील्ड में लाइन सीमांकक होता है)
- यूनिकोड (अंतर्निहित पाठ प्रारूप अपर्याप्त हो सकता है)
- अलग-अलग ओएस के लिए अलग-अलग लाइन टर्मिनेटर (सीआर या सीआरएलएफ या एलएफ या एनयूएल है?)
- इनलाइन टिप्पणियां (#, //, -, आदि के साथ उपसर्ग रेखा;)
- संस्करण प्रबंधन (फ़ाइल के नवीनतम संस्करण में कम या ज्यादा क्षेत्र शामिल हैं)
- NULL और खाली डेटा (, "", के बीच अंतर करना रिक्त है, लेकिन, null है?)
आप इसे मेटा-डेटा हेडर के साथ संपर्क कर सकते हैं जो बताता है कि खेतों को कैसे पार्स किया जाना चाहिए, लेकिन फिर आप बस एक्सएमएल का उपयोग कर सकते हैं। यह इस तरह के फ्रीफॉर्म CSV मेस के कारण है कि इसका आविष्कार किया गया था। एक्सएमएल दृष्टिकोण बस के लिए बहुत भारी लगता है, इसके चेहरे पर, एक साधारण समस्या हो सकती है।
एक लोकप्रिय विकल्प "अजीब चरित्र सीमांकक" रणनीति है। यह ऊपर भागने के मुद्दों का एक बहुत कुछ हो जाता है क्योंकि आप कुछ का उपयोग करते हैं | क्षेत्र परिसीमन के लिए (पाइप) चरित्र, और रिकॉर्ड समाप्ति के लिए एक CRLF। यह मल्टी-लाइन फ़ील्ड समस्या के आसपास नहीं मिलता है (जब तक कि आप फ़ील्ड काउंटर का उपयोग नहीं करते हैं) लेकिन आपको मनुष्यों के लिए अच्छी तरह से स्वरूपित लाइनें मिलती हैं।
कुल मिलाकर, अगर आप इस तरह की फ़ाइल को संभालने का एक सरल तरीका खोज रहे हैं, तो जावा दुनिया में, आप बस OpenCSV को इस पर फेंक सकते हैं । इस तरह आप एक स्थापित ढांचे में सभी समस्याओं को दूर करते हैं।