existe-t-il une bonne implémentation gratuite de l'analyseur CSV disponible sous une licence libérale? Un équivalent de SuperCSV pour Java, peut-être un port?
FileHelpers (pour CSV au moins) exige que vous "définissiez une classe qui correspond à l'enregistrement dans la source (fichier)", "vous devez déclarer une classe de mappage d'enregistrements", etc. et ce n'est pas si chaud. Je voudrais convertir CSV en DataTable, sans savoir à l'avance combien de colonnes attendre.
Pour donner plus de chiffres terre-à-terre, avec un fichier CSV de 45 Mo contenant 145 champs et 50 000 enregistrements, le lecteur traitait environ 30 Mo / s. Donc dans l'ensemble, cela a pris 1,5 seconde! Les spécifications de la machine étaient P4 3,0 GHz, 1024 Mo.
(reprenant mon +1): Je viens de casser le lecteur lumenworks Fast CSV sur un fichier de 53 Mo. Il semble que la mise en cache des lignes ait échoué après 43 000 lignes et brouillé le tampon. J'ai essayé Microsoft.VisualBasic.FileIO.TextFieldParseet ça a fait l'affaire.
Fini le codage
11
Vous pouvez charger un fichier CSV dans DataTable.
Exemple de code -
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;}
Assurez-vous de compiler votre projet sur un processeur x86. Cela ne fonctionne pas pour x64.
cela a plutôt bien fonctionné pour moi car je voulais rester avec les bibliothèques ODBC ou OLEDB intégrées. Btw, ce qui suit contient des exemples de code supplémentaires pour OLEDB et ODBC: csvreader.com/csv_benchmarks.php
J'ai commencé à utiliser CSV Parser qui fait partie de CommonLibrary.NET .
Il utilise .NET 3.5, dispose d'une API simple et de surcharges / méthodes et lamda pratiques pour les itérations.
Je n'ai pas de benchmarks pour celui-ci comme ci-dessus, mais une bonne chose à ce sujet est qu'il ne s'agit que d'un composant d'une bibliothèque similaire à Java Commons. Je reçois donc également un analyseur de ligne de commande, une implémentation de référentiel entre autres.
Réponses:
Bibliothèque Open Source FileHelpers .
la source
Il y a une belle implémentation sur CodeProject :
la source
Microsoft.VisualBasic.FileIO.TextFieldParse
et ça a fait l'affaire.Vous pouvez charger un fichier CSV dans DataTable.
Exemple de code -
Assurez-vous de compiler votre projet sur un processeur x86. Cela ne fonctionne pas pour x64.
la source
essayez filehelpers Fonctionne incroyablement bien. Je l'utilise pour analyser un fichier de 100 Mo chaque jour.
la source
Avez-vous essayé la bibliothèque FileHelpers? C'est gratuit, open source et peut être utilisé pour analyser les fichiers CSV.
la source
J'ai commencé à utiliser CSV Parser qui fait partie de CommonLibrary.NET .
Il utilise .NET 3.5, dispose d'une API simple et de surcharges / méthodes et lamda pratiques pour les itérations.
Je n'ai pas de benchmarks pour celui-ci comme ci-dessus, mais une bonne chose à ce sujet est qu'il ne s'agit que d'un composant d'une bibliothèque similaire à Java Commons. Je reçois donc également un analyseur de ligne de commande, une implémentation de référentiel entre autres.
la source