我有一个用C#编写的程序,它读取CSV,解析数据,在将新的条件数据放入MySQL数据库(在类“anTix”中处理)之前对数据进行一些转换。代码如下:
int counter = 0;
string lineStr;
string[] splitStr;
anTix active = new anTick();
System.IO.StreamReader file;
file = new System.IO.StreamReader(ofd.FileName);
while ( ( lineStr = file.ReadLine() ) != null )
{
counter++;
splitStr = lineStr.Split( ',' );
active.procData( splitStr[0],
splitStr[1] + splitStr[2],
Convert.ToSingle( splitStr[3] ),
Convert.ToInt16( splitStr[4] ),
Convert.ToChar( splitStr[5] ) );
}
file.Close();这并不奇怪,但它完成了任务,即使我以前认为是大文件(1.5GB是我处理过的最大文件)。我现在已经升级到更大的数据文件大小(25-50GB),而且我没有足够的内存来处理那么大的文件。
在浏览了一下之后,我研究了内存映射的文件,但是我对进程的效率有一些担忧(我只在处理文件中的并发进程时使用了内存映射文件,而不是作为内存分配的解决方案),并且我不想为我典型的100-200 my文件减慢进程。
有没有更容易处理这个问题的建议?
发布于 2015-05-08 00:32:30
你不能把文件分割成一组较小的文件,然后在每一个较小的文件上运行你的程序吗?还是有什么东西要求你立即阅读整个程序?
https://stackoverflow.com/questions/30113836
复制相似问题