这就是我想要实现的目标。循环遍历超过 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/