c# - StringBuilder内存不足C#

标签 c#

这就是我想要实现的目标。循环遍历超过 100 万条记录的数据集,并在导出到 C 盘的文本文件中创建数据转储。

我正在遍历一个包含超过一百万条记录的数据集。这是循环内部的内容

我在循环中使用 StringBuilder

myString.Append(ds.tables[0](i)(0));  <-- each datarow is not more than 10 char long.

它抛出一个错误,指出内存不足。我有 12 GB 的内存。

我该如何解决这个问题?

最佳答案

不要使用中间的 StringBuilder -- 在您大概调用 .ToString() 将结果写入磁盘之前,它的内容位于您计算机的 RAM 中。相反,在处理数据时将数据写入磁盘,例如:

using (var sw = new StreamWriter(outputFilePath, true)) 
{
    // start loop
        sw.Write(ds.tables[0](i)(0));
    // end loop
}

这将使用默认编码 (UTF-8) 和缓冲区大小(我认为是 4KB)将文本写入文件。

关于c# - StringBuilder内存不足C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28953208/

相关文章:

c# - 有没有办法在派生类中使用同名但类型不同的属性?

c# - 如何在单独的 AppDomain 中托管 IronPython 引擎?

c# - 我如何使用 Linq 从列表中取出两条随机记录?

c# - 如何使用 Restsharp 反序列化 Xml 列表?

javascript - 谷歌地图中的过滤器不起作用(JS)

c# - 使用 Directx DirectSound 从麦克风捕获声音

c# - 在 Access 中基于数据表行运行查询的快速/有效的方法?

c# - 使用简单注入(inject)器注入(inject) MVC Controller 构造函数时未注册参数

c# - 记录应用程序 block - 记录调用者

c# - 通过从 mysql 数据库获得的排名来验证用户,而不使用 mysql 查询