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)at System.Text.StringBuilder.Append(Char value、Int32 repeatCount)at System.Text.StringBuilder.Append(Char value)at 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を使用してこれほど大きなファイルを解析することは可能ですか?そうでない場合、誰もがこれほど大きなファイルを解析するアプローチを推奨できますか?ありがとう。