c'è una buona e gratuita implementazione del parser CSV disponibile con qualche licenza liberale? Qualche controparte di SuperCSV per Java, forse un port?
c'è una buona e gratuita implementazione del parser CSV disponibile con qualche licenza liberale? Qualche controparte di SuperCSV per Java, forse un port?
Risposte:
C'è una bella implementazione su CodeProject :
Per fornire numeri più concreti, con un file CSV da 45 MB contenente 145 campi e 50.000 record, il lettore stava elaborando circa 30 MB / sec. Quindi, tutto sommato, ci sono voluti 1,5 secondi! Le specifiche della macchina erano P4 3.0 GHz, 1024 MB.
Microsoft.VisualBasic.FileIO.TextFieldParse
e ha funzionato.
Puoi caricare un file CSV in DataTable.
Codice di esempio -
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;
}
Assicurati di compilare il tuo progetto su un processore x86. Non funziona per x64.
prova filehelpers Funziona incredibilmente bene. Lo sto usando per analizzare un file da 100 MB ogni giorno.
Hai provato la libreria FileHelpers? È gratuito, open source e può essere utilizzato per analizzare i file CSV.
Ho iniziato a utilizzare CSV Parser che fa parte di CommonLibrary.NET .
Utilizza .NET 3.5, ha una semplice API e convenienti metodi / sovraccarichi e lamda per le iterazioni.
Non ho benchmark per questo come sopra, ma la cosa bella di questo è che è solo un componente di una libreria simile a Java Commons. Quindi ottengo anche un parser della riga di comando, l'implementazione del repository tra le altre cose.