将 4000 万条记录从 csv 流转换为制表符分隔文本流时出现内存不足异常

问题描述 投票:0回答:1

我正在尝试将 csv 流转换为制表符分隔的文本内存流,当它尝试写入流时,它给了我内存不足异常的错误,它正在本地计算机中进行处理,但是问题发生在开发环境上代码部署后。

下面是示例代码

        MemoryStream tabDelimitedStream = new MemoryStream();
        using (var reader = new StreamReader(downloadFileData))
        using (var writer = new StreamWriter(tabDelimitedStream, Encoding.UTF8 ,8096))
        {
            // Read the lines from the original stream and process them
            while (!reader.EndOfStream)
            {
                char[] buffer = new char[8096];
                int bytesRead;
                string chunk;
                while ((bytesRead = reader.Read(buffer, 0, buffer.Length)) > 0)
                {
                    chunk = new string(buffer, 0, bytesRead).Replace(",", "\t");
                    writer.Write(chunk);
                    writer.Flush();
                }
            }
            tabDelimitedStream.Position = 0;

我试图在缓冲区中读取它,但仍然失败,我尝试设置 tabDelimitedStream 的最大长度,但这也无法解决问题。任何帮助将不胜感激,提前致谢。

尝试添加到缓冲区并分块写入,但没有成功。

c# memorystream
1个回答
0
投票

如果要将其上传到 Blob 存储,可以直接写入 Blob 流,而不是在内存中分配它(请参阅 https://learn.microsoft.com/en-us/azure/storage/blobs/storage- blob 上传#上传到 blob 存储中的流)

提示:给出下一个答案的完整上下文

© www.soinside.com 2019 - 2024. All rights reserved.