Gibt es eine gute und kostenlose Implementierung des CSV-Parsers unter einer liberalen Lizenz? Ein Gegenstück zu SuperCSV für Java, vielleicht ein Port?
FileHelpers (zumindest für CSV) erfordert, dass Sie "eine Klasse definieren, die dem Datensatz in der Quelle (Datei) zugeordnet ist", "Sie müssen eine Datensatzzuordnungsklasse deklarieren" usw. und dies ist nicht so heiß. Ich möchte CSV in eine DataTable konvertieren, ohne vorher zu wissen, wie viele Spalten zu erwarten sind.
Konrad Morawski
53
Es gibt eine nette Implementierung auf CodeProject :
Um mehr bodenständige Zahlen zu erhalten, verarbeitete der Leser mit einer 45-MB-CSV-Datei mit 145 Feldern und 50.000 Datensätzen etwa 30 MB / s. Alles in allem dauerte es also 1,5 Sekunden! Die Maschinenspezifikationen waren P4 3,0 GHz, 1024 MB.
(Ich nehme meine +1 zurück): Ich habe gerade den Lumenworks Fast CSV-Reader für eine 53-MB-Datei kaputt gemacht. Es sieht so aus, als ob das Zeilen-Caching nach 43.000 Zeilen fehlgeschlagen ist und den Puffer verschlüsselt hat. Versuchte das Microsoft.VisualBasic.FileIO.TextFieldParseund es hat den Trick getan.
Gone Coding
11
Sie können eine CSV-Datei in DataTable laden.
Beispielcode -
staticDataTableCsvToDataTable(string strFileName){DataTable dataTable =newDataTable("DataTable Name");
using (OleDbConnection conn =newOleDbConnection("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 =newSystem.Data.OleDb.OleDbDataAdapter(strQuery, conn);
adapter.Fill(dataTable);}return dataTable;}
Stellen Sie sicher, dass Sie Ihr Projekt auf dem x86-Prozessor kompilieren. Es funktioniert nicht für x64.
Dies funktionierte ziemlich gut für mich, da ich bei den eingebauten ODBC- oder OLEDB-Bibliotheken bleiben wollte. Übrigens enthält das Folgende zusätzliche Codebeispiele für OLEDB und ODBC: csvreader.com/csv_benchmarks.php
Es verwendet .NET 3.5, verfügt über eine einfache API und praktische Überladungen / Methoden und Lamdas für Iterationen.
Ich habe keine Benchmarks für diese wie oben, aber das Schöne daran ist, dass es nur eine Komponente einer Bibliothek ist, die Java Commons ähnelt. So bekomme ich auch einen Kommandozeilen-Parser, unter anderem eine Repository-Implementierung.
Antworten:
FileHelpers Open Source Library .
quelle
Es gibt eine nette Implementierung auf CodeProject :
quelle
Microsoft.VisualBasic.FileIO.TextFieldParse
und es hat den Trick getan.Sie können eine CSV-Datei in DataTable laden.
Beispielcode -
Stellen Sie sicher, dass Sie Ihr Projekt auf dem x86-Prozessor kompilieren. Es funktioniert nicht für x64.
quelle
versuchen Sie es mit Filehelpers. Arbeiten Sie erstaunlich gut. Ich verwende es, um jeden Tag eine 100-MB-Datei zu analysieren.
quelle
Haben Sie die FileHelpers-Bibliothek ausprobiert? Es ist kostenlos, Open Source und kann zum Parsen von CSV-Dateien verwendet werden.
quelle
Ich habe angefangen, CSV Parser zu verwenden, der Teil von CommonLibrary.NET ist .
Es verwendet .NET 3.5, verfügt über eine einfache API und praktische Überladungen / Methoden und Lamdas für Iterationen.
Ich habe keine Benchmarks für diese wie oben, aber das Schöne daran ist, dass es nur eine Komponente einer Bibliothek ist, die Java Commons ähnelt. So bekomme ich auch einen Kommandozeilen-Parser, unter anderem eine Repository-Implementierung.
quelle