我有一个用C#编写的程序,它读取CSV,解析数据,在将新条件数据放入MySQL数据库之前进行一些数据转换(在类#34; anTix&#34中处理;) 。代码如下:
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文件的过程。
是否有任何建议可以更轻松地解决此问题?
答案 0 :(得分:0)
您不能将文件拆分成一组较小的文件,并在每个较小的文件上运行程序吗?或者是否需要您立即阅读整个程序?