Я пытаюсь разобрать очень большой CSV-файл с помощью FileHelpers (http://www.filehelpers.net/ ). Размер файла составляет 1 ГБ в архиве и около 20 ГБ в разархивированном виде.
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, Int32 repeatCount) в System.Text.StringBuilder.Append (значение Char) в FileHelpers.StringHelperoted.LineString quoteChar, Boolean allowMultiline) в FileHelpers.DelimitedField.ExtractFieldString (строка LineInfo) в FileHelpers.FieldBase.ExtractValue (строка LineInfo) в FileHelpers.RecordInfo.StringToRecord (строка LineInfo) в FileHeladerEngreamReader_2
Можно ли проанализировать такой большой файл с помощью FileHelpers? Если нет, может ли кто-нибудь порекомендовать подход к синтаксическому анализу файлов такого размера? Спасибо.