existe uma implementação boa e gratuita do analisador CSV disponível sob alguma licença liberal? Alguma contraparte do SuperCSV para Java, talvez uma porta?
FileHelpers (para CSV pelo menos) requer que você "defina uma classe que mapeie para o registro na origem (arquivo)", "você deve declarar uma Classe de mapeamento de registro" etc. e isso não é tão importante. Gostaria de converter CSV em DataTable, sem saber com antecedência quantas colunas esperar.
Para fornecer mais números reais, com um arquivo CSV de 45 MB contendo 145 campos e 50.000 registros, o leitor estava processando cerca de 30 MB / s. Resumindo, demorou 1,5 segundos! As especificações da máquina eram P4 3,0 GHz, 1024 MB.
(pegando de volta meu +1): Acabei de quebrar o leitor Lumenworks Fast CSV em um arquivo de 53Mb. Parece que o cache de linha falhou após 43.000 linhas e embaralhou o buffer. Tentei o Microsoft.VisualBasic.FileIO.TextFieldParsee funcionou.
Gone Coding
11
Você pode carregar um arquivo CSV para DataTable.
Código de amostra -
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;}
Certifique-se de compilar seu projeto para o processador x86. Não funciona para x64.
isso funcionou muito bem para mim, pois eu queria ficar com as bibliotecas ODBC ou OLEDB integradas. A propósito, o seguinte tem exemplos de código adicionais para OLEDB e ODBC: csvreader.com/csv_benchmarks.php
Meringros,
5
Isso não está funcionando em 64 bits, infelizmente.
Ele usa .NET 3.5, tem uma API fácil e sobrecargas / métodos e lamda convenientes para iterações.
Não tenho nenhum benchmark para este como acima, mas o bom sobre isso é que é apenas um componente de uma biblioteca semelhante ao Java Commons. Portanto, também consigo um analisador de linha de comando, implementação de repositório, entre outras coisas.
Respostas:
Biblioteca de código aberto FileHelpers .
fonte
Há uma boa implementação no CodeProject :
fonte
Microsoft.VisualBasic.FileIO.TextFieldParse
e funcionou.Você pode carregar um arquivo CSV para DataTable.
Código de amostra -
Certifique-se de compilar seu projeto para o processador x86. Não funciona para x64.
fonte
tente filehelpers Funcionam incrivelmente bem. Estou usando-o para analisar um arquivo de 100 MB todos os dias.
fonte
Você já experimentou a biblioteca FileHelpers? É gratuito, de código aberto e pode ser usado para analisar arquivos CSV.
fonte
Comecei a usar o CSV Parser que faz parte do CommonLibrary.NET .
Ele usa .NET 3.5, tem uma API fácil e sobrecargas / métodos e lamda convenientes para iterações.
Não tenho nenhum benchmark para este como acima, mas o bom sobre isso é que é apenas um componente de uma biblioteca semelhante ao Java Commons. Portanto, também consigo um analisador de linha de comando, implementação de repositório, entre outras coisas.
fonte