解析巨大的CSV并加载到MySQL数据库

时间:2015-05-08 00:26:11

标签: c# mysql csv

我有一个用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文件的过程。

是否有任何建议可以更轻松地解决此问题?

1 个答案:

答案 0 :(得分:0)

您不能将文件拆分成一组较小的文件,并在每个较小的文件上运行程序吗?或者是否需要您立即阅读整个程序?