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?
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?
Antworten:
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.
Microsoft.VisualBasic.FileIO.TextFieldParse
und es hat den Trick getan.
Sie können eine CSV-Datei in DataTable laden.
Beispielcode -
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;
}
Stellen Sie sicher, dass Sie Ihr Projekt auf dem x86-Prozessor kompilieren. Es funktioniert nicht für x64.
versuchen Sie es mit Filehelpers. Arbeiten Sie erstaunlich gut. Ich verwende es, um jeden Tag eine 100-MB-Datei zu analysieren.
Haben Sie die FileHelpers-Bibliothek ausprobiert? Es ist kostenlos, Open Source und kann zum Parsen von CSV-Dateien verwendet werden.
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.