我正在尝试使用 FileHelpers ( http://www.filehelpers.net/ ) 解析一个非常大的 csv 文件。该文件是 1GB 的压缩文件和大约 20GB 的解压缩文件。
string fileName = @"c:\myfile.csv.gz";
using (var fileStream = File.OpenRead(fileName))
{
using (GZipStream gzipStream = new GZipStream(fileStream, CompressionMode.Decompress, false))
{
using (TextReader textReader = new StreamReader(gzipStream))
{
var engine = new FileHelperEngine<CSVItem>();
CSVItem[] items = engine.ReadStream(textReader);
}
}
}
FileHelpers 然后抛出 OutOfMemoryException。
测试失败:引发了“System.OutOfMemoryException”类型的异常。System.OutOfMemoryException:引发了“System.OutOfMemoryException”类型的异常。在 System.Text.StringBuilder.ExpandByABlock(Int32 minBlockCharCount) 在 System.Text.StringBuilder.Append(Char value, Int32 repeatCount) 在 System.Text.StringBuilder.Append(Char value) 在 FileHelpers.StringHelper.ExtractQuotedString(LineInfo line, Char quoteChar, Boolean allowMultiline) at FileHelpers.DelimitedField.ExtractFieldString(LineInfo line) at FileHelpers.FieldBase.ExtractValue(LineInfo line) at FileHelpers.RecordInfo.StringToRecord(LineInfo line) at FileHelpers.FileHelperEngine
1.ReadStream(TextReader reader, Int32 maxRecords, DataTable dt) at FileHelpers.FileHelperEngine
1.ReadStream(TextReader reader)
是否可以使用 FileHelpers 解析这么大的文件?如果没有,任何人都可以推荐一种解析这么大文件的方法吗?谢谢。