मुझे इस गर्मी में एक परियोजना के लिए .NET में एक CSV पार्सर का उपयोग करना पड़ा और माइक्रोसॉफ़्ट जेट टेक्स्ट ड्राइवर पर बस गया। आप एक कनेक्शन स्ट्रिंग का उपयोग कर एक फ़ोल्डर निर्दिष्ट करते हैं, फिर SQL चयन कथन का उपयोग कर फ़ाइल पूछें। आप schema.ini फ़ाइल का उपयोग करके मजबूत प्रकार निर्दिष्ट कर सकते हैं। मैंने पहले ऐसा नहीं किया था, लेकिन फिर मुझे खराब परिणाम मिल रहे थे, जहां डेटा का प्रकार तुरंत स्पष्ट नहीं था, जैसे कि आईपी नंबर या "XYQ 3.9 SP1" जैसी प्रविष्टि।
एक सीमा जिसमें मैंने भाग लिया वह यह है कि यह 64 वर्णों के ऊपर कॉलम नामों को संभाल नहीं सकता है; यह truncates। यह एक समस्या नहीं होनी चाहिए, सिवाय इसके कि मैं बहुत खराब डिजाइन किए गए इनपुट डेटा से निपट रहा था। यह एक एडीओ.NET डेटासेट देता है।
यह मुझे मिला सबसे अच्छा समाधान था।मैं अपने स्वयं के सीएसवी पार्सर को घुमाने से सावधान रहूंगा, क्योंकि शायद मुझे कुछ अंत मामलों में याद आती है, और मुझे वहां .NET के लिए कोई अन्य मुफ्त सीएसवी पार्सिंग पैकेज नहीं मिला।
संपादित करें: इसके अलावा, प्रति निर्देशिका केवल एक schema.ini फ़ाइल हो सकती है, इसलिए मैंने आवश्यक कॉलम को दृढ़ता से टाइप करने के लिए गतिशील रूप से इसमें शामिल किया। यह केवल निर्दिष्ट कॉलम को दृढ़ता से टाइप करेगा, और किसी अनिर्दिष्ट फ़ील्ड के लिए अनुमान लगाएगा। मैंने वास्तव में इसकी सराहना की, क्योंकि मैं तरल पदार्थ 70+ कॉलम सीएसवी आयात करने से निपट रहा था और प्रत्येक कॉलम को निर्दिष्ट नहीं करना चाहता था, केवल गलत व्यवहार करने वाले।
यह http://stackoverflow.com/questions/1103495/is-there-a-proper-way-to-read-csv-files –
का डुप्लिकेट होना माना जाता है इस 1,103,495 से बनाया गया था एक साल पहले , मुझे लगता है कि सवाल इस का एक डुप्लिकेट है। – MattH
धन्यवाद, मैट। मैं बस उन्हें एक साथ जोड़ने की कोशिश कर रहा था, यह इंगित नहीं करता कि कौन सा पहले आया था। आप देखेंगे कि मेरे पास इस पर इशारा करते हुए दूसरे प्रश्न पर बिल्कुल वही पाठ है। क्या दो प्रश्नों को एक साथ बांधने का एक बेहतर तरीका है? –