1

我有一个程序会生成大量数据,它会逐行写入 csv 文件(在创建数据时)。如果我能够在 excel 中打开 csv 文件,它将大约有 10 亿个单元格(75,000*14,600)。每次我尝试访问它(甚至创建这个大小的数组)时都会抛出 System.OutOfMemoryException。如果有人知道如何将数据导入 vb.net,以便我可以做一些简单的操作(所有数据需要立即可用),那么我会尝试你的每一个想法。

我已经考虑增加使用的 ram 数量,但其他文章/帖子说这将在 10 亿大关之前运行。这里的时间没有问题,假设我可以处理它不超过几天/几周(我每年只运行一次或两次)。如果您无论如何都不知道该怎么做,我能想到的唯一其他解决方案是将excel中的列数增加到〜75,000(如果可能的话 - 不能以相反的方式写入数据),或者我想如果有另一种语言可以处理这个?

目前它在一开始就失败了:

 Dim bigmatrix(75000, 14600) As Double

非常感谢,弗雷泽 :)

4

1 回答 1

1

首先,这将始终需要 64 位操作系统和相当大的 RAM,因为您尝试分配大约 8 GB。

如果您打开gcAllowVeryLargeObjects ,这在面向 .NET 4.5 的 Visual Basic 中理论上是可能的。话虽如此,如果可能的话,我建议使用锯齿状数组而不是多维数组,因为这将消除需要单个分配 8GB 的​​要求。(这也可能允许它在 .NET 4 或更早版本中工作。)

于 2012-08-16T00:34:47.517 回答