我有一个用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-200MB文件的过程。
有什么建议可以更轻松地解决此问题吗?
您不能仅将文件拆分为一组较小的文件,然后在每个较小的文件上运行程序吗?还是有些事情要求您立即阅读整个程序?
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句