我有一个程序产生大量的数据,它将逐行写入一个csv文件(随着数据的创建)。如果我能够在Excel中打开csv文件,它将大约有10亿个单元格(75,000 * 14,600)。我每次尝试访问它时都会引发System.OutOfMemoryException异常(或者甚至创建一个这样大小的数组)。如果任何人有任何想法如何可以将数据带入vb.net,所以我可以做一些简单的操作(所有的数据需要立即可用),那么我会尝试你有每个想法。如何在vb.net中处理一个非常大的数组
我已经看过增加使用的RAM的数量,但其他文章/文章说这将在10亿分之前短暂运行。在这里没有任何问题,假设它不超过几天/每周我可以处理它(我只会每年运行一次或两次)。如果你不知道这么做,我能想到的唯一的其他解决方案就是将excel中的列数增加到75,000(如果可能的话 - 不能用其他方式写数据),或者我猜想如果有另一种语言可以处理这个问题?
目前它在一开始失败:
Dim bigmatrix(75000, 14600) As Double
非常感谢, 弗雷泽:)
为什么你说所有的数据必须一次可用?这里最好的办法就是尽你所能地对这个陈述进行质疑。 :-) – 2012-08-16 05:34:51
Jason,发生什么事是我将数据逐行写入文件。然后我需要数据转置(即列到行等)。没有全部日期,我看不到任何合理的方式。如果你能那样做会很棒! :) – FraserOfSmeg 2012-08-16 17:23:27
如果你只是想转换一个巨大的CSV,我会做的就是从概念上将数组分成1000 x 1,000个大块,即一次读取一千行,计算这个转置,并将每个块写入文件。然后你可以做一个合并通行证,你在这些块中读取(以转置的形式)并流出最终文件。 – 2012-08-16 19:32:01