【发布时间】:2016-01-28 23:00:13
【问题描述】:
我正在构建一个处理非常大的 csv 文件的 WPF (MVVM) 应用程序。我们说的是 1GB 到 10GB。
我打开文件并使用 File.ReadLines 将其解析为以下类的列表:
public class FileLine
{
public DateTime Time { get; set; }
public string Message { get; set; } //Usually around 256 characters
public string Info1 { get; set; } //Exact 56 characters
public string Info2 { get; set; } //Exact 4 characters
//and so on
}
...然后我会进行各种数据操作、查询、图表...您的名字...一切都使用 Linq。
我们正在测试一个 1.8GB 的文件,当它打开时,该过程需要大约 2GB 的内存。
最终,当我的客户需要打开他的 10GB 文件时,这将是不可能的,因为这将占用 12GB 以上的内存。 这种工作的最佳类型/集合/列表/数据集是什么?
【问题讨论】:
-
恐怕有人会告诉我使用SQL Server...只是说。
-
这将花费很长时间.. 使用更强大的东西来存储数据,例如将其存储到
Oracle DB, || Sql Server -
你真的需要一次将它全部加载到内存中吗?你在这里的用例是什么?恐怕这个问题目前的范围太广了。
-
Eventually, when my customer needs to open his 10GB file it will be impossible, because it is going to take 12GB+ of Memory.不,那是just not true。 (尽管尝试将这么多数据加载到内存中是一个非常糟糕的主意,尽管这是可能的。哦,当然有些系统实际上只有 12+GB 的 RAM,但这也不是重点。 ) -
@MethodMan,我很害怕 :)。
标签: c# linq collections dataset large-files