C # के लिए CSV पार्सर / रीडर? [बन्द है]


89

क्या कुछ उदार लाइसेंस के तहत सीएसवी पार्सर का अच्छा और मुफ्त कार्यान्वयन उपलब्ध है? जावा के लिए SuperCSV के कुछ समकक्ष , शायद एक बंदरगाह?



5
Microsoft.VisualBasic.FileIO.TextFieldParser का उपयोग कर;


1
रचनात्मक नहीं है? SO प्रशंसक इतने पागल हैं। यह एक बहुत ही उपयोगी प्रश्न है।
रिचार्ड

जवाबों:


70

24
FileHelpers (CSV के लिए कम से कम) के लिए आवश्यक है कि आप "एक वर्ग को परिभाषित करें जो स्रोत (फ़ाइल) में रिकॉर्ड करने के लिए मैप करता है", "आपको एक रिकॉर्ड मैपिंग क्लास घोषित करना चाहिए" आदि और यह इतना गर्म नहीं है। मैं CSV को डेटाटेबल में बदलना चाहता हूँ, न जाने कितने कॉलमों में।
कोनराड मोरावस्की

53

CodeProject पर एक अच्छा कार्यान्वयन है :

पृथ्वी की संख्या को और अधिक नीचे देने के लिए, एक 45 एमबी सीएसवी फ़ाइल जिसमें 145 फ़ील्ड और 50,000 रिकॉर्ड हैं, पाठक लगभग 30 एमबी / सेकंड की प्रक्रिया कर रहा था। तो सब में, यह 1.5 सेकंड लिया! मशीन चश्मा P4 3.0 GHz, 1024 MB थे।


(मेरा +1 वापस लेते हुए): मैंने सिर्फ 53Mb फ़ाइल पर लुमेनवर्क्स फास्ट CSV रीडर को तोड़ा। ऐसा लगता है कि 43,000 पंक्तियों के बाद लाइन कैशिंग विफल हो गई और बफर को खंगाल डाला। कोशिश की Microsoft.VisualBasic.FileIO.TextFieldParseऔर इसने चाल चली।
कोडिंग

11

आप डेटाटेबल के लिए एक सीएसवी फ़ाइल लोड कर सकते हैं।

नमूना कोड -

static DataTable CsvToDataTable(string strFileName)
{
    DataTable dataTable = new DataTable("DataTable Name");

    using (OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OleDb.4.0; Data Source = " + Directory.GetCurrentDirectory() + "; Extended Properties = \"Text;HDR=YES;FMT=Delimited\""))
    {
        conn.Open();
        string strQuery = "SELECT * FROM [" + strFileName + "]";
        OleDbDataAdapter adapter = 
            new System.Data.OleDb.OleDbDataAdapter(strQuery, conn);
        adapter.Fill(dataTable);
    }
    return dataTable;
}

सुनिश्चित करें कि आप अपने प्रोजेक्ट को x86 प्रोसेसर पर संकलित करते हैं। यह x64 के लिए काम नहीं करता है।


1
यह मेरे लिए बहुत अच्छा काम किया क्योंकि मैं बिल्ट-इन ODBC या OLEDB लाइब्रेरी के साथ रहना चाहता था। Btw, निम्नलिखित में OLEDB और ODBC दोनों के लिए अतिरिक्त कोड नमूने हैं: csvreader.com/csv_benchmarks.php
Meringros

5
यह 64 बिट पर काम नहीं कर रहा है, अफसोस।
22


7

filehelpers की कोशिश करो आश्चर्यजनक रूप से अच्छी तरह से काम करते हैं । मैं हर दिन 100 एमबी फ़ाइल पार्स करने के लिए इसका उपयोग कर रहा हूं।


4

क्या आपने FileHelpers लाइब्रेरी की कोशिश की है? यह मुफ़्त है, खुला स्रोत है और इसका उपयोग CSV फ़ाइलों को पार्स करने के लिए किया जा सकता है।


3

मैंने CSV पार्सर का उपयोग करना शुरू कर दिया है जो कि CommonLibrary.NET का हिस्सा है ।

यह .NET 3.5 का उपयोग करता है, इसमें एक आसान एपीआई और सुविधाजनक अधिभार / विधियाँ और पुनरावृत्तियों के लिए लामडा है।

मेरे पास इसके लिए ऊपर की तरह कोई भी बेंचमार्क नहीं है, लेकिन इसके बारे में अच्छी बात यह है कि यह जावा कॉमन्स के समान लाइब्रेरी का सिर्फ एक घटक है। इसलिए मुझे अन्य चीजों के बीच एक कमांड-लाइन पार्सर, रिपोजिटरी कार्यान्वयन भी मिलता है।

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