czy istnieje dobra i bezpłatna implementacja parsera CSV na jakiejś liberalnej licencji? Jakiś odpowiednik SuperCSV dla Java, być może port?
Odpowiedzi:
W CodeProject jest ładna implementacja :
Aby podać bardziej przyziemne liczby, w pliku CSV o rozmiarze 45 MB zawierającym 145 pól i 50 000 rekordów czytnik przetwarzał około 30 MB / s. W sumie zajęło to 1,5 sekundy! Specyfikacje maszyny to P4 3,0 GHz, 1024 MB.
Microsoft.VisualBasic.FileIO.TextFieldParse
i to załatwiło sprawę.
Możesz załadować plik CSV do DataTable.
Przykładowy kod -
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;
}
Upewnij się, że kompilujesz swój projekt na procesor x86. Nie działa na x64.
wypróbuj pomocniki plików Działają zadziwiająco dobrze. Używam go do analizowania pliku 100 MB każdego dnia.
Czy wypróbowałeś bibliotekę FileHelpers? Jest darmowy, open source i może być używany do analizowania plików CSV.
Zacząłem używać CSV Parser, który jest częścią CommonLibrary.NET .
Używa .NET 3.5, ma łatwe API i wygodne przeciążenia / metody i lamda do iteracji.
Nie mam żadnych testów porównawczych dla tego, jak powyżej, ale fajną rzeczą jest to, że jest to tylko jeden składnik biblioteki podobnej do Java Commons. Dostaję więc między innymi parser wiersza poleceń, implementację repozytorium.