mysql大数据出错,请各位帮忙分析!!

一个数据库中,我需要将表A中的300万数据逐条处理后,写入表B,用C# 写了个小工具,但执行30分钟左右时就报错,报错内容如下:

MySql.Data.MySqlClient.MySqlException (0x80004005): Fatal error encountered during data read. ---> MySql.Data.MySqlClient.MySqlException (0x80004005): Reading from the stream has failed. ---> System.IO.IOException: 无法从传输连接中读取数据: 远程主机强迫关闭了一个现有的连接。。 ---> System.Net.Sockets.SocketException: 远程主机强迫关闭了一个现有的连接。

部分代码如下:

public static MySqlConnection getMySqlCon()
    {
        String mysqlStr = "Database=xxx;Data Source=localhost;User Id=root;Password=root;pooling=false;CharSet=utf8";
        MySqlConnection conn = new MySqlConnection(mysqlStr);
        conn.Open();
        return conn;
    }
       MySqlConnection mysql = getMySqlCon();
            String sqlSearch = "select * from xxxxxx";
            MySqlCommand mySqlCommand = getSqlCommand(sqlSearch, mysql);
            getResultset(mySqlCommand);
            mySqlCommand.Dispose();
            mysql.Close();
            mysql.Dispose();
    public static void getResultset(MySqlCommand mySqlCommand)
    {
        MySqlDataReader reader = mySqlCommand.ExecuteReader();
        try
        {
            System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch();
            sw.Start();

           while (reader.Read())
            {
                if (reader.HasRows)
                {
                  省略部分代码.....

                    MySqlConnection mysql2 = getMySqlCon();
                    String news_inster = "省略SQL语句....";
                    String news_update = "省略SQL语句... ";
                    String data_inster = "省略SQL语句...;
                    String index_inster = "省略SQL语句...";
                    Console.WriteLine(news_inster);
                    Console.WriteLine(news_update);
                    Console.WriteLine(data_inster);
                    Console.WriteLine(index_inster);
                    MySqlCommand mySql_news_inster = getSqlCommand(news_inster, mysql2);
                    MySqlCommand mySql_news_update = getSqlCommand(news_update, mysql2);
                    MySqlCommand mySql_data_inster = getSqlCommand(data_inster, mysql2);
                    MySqlCommand mySql_index_inster = getSqlCommand(index_inster, mysql2);
                    getInsert(mySql_news_inster);
                    getUpdate(mySql_news_update);
                    getInsert(mySql_data_inster);
                    getInsert(mySql_index_inster);
                    mySqlCommand.Dispose();
                    mysql2.Close();
                    mysql2.Dispose();

                }
            }
            sw.Stop();
            Console.WriteLine("写入完成,共花费时间:Time elapsed: {0}", sw.Elapsed);
            Console.ReadKey();
        }
        catch (Exception ex)
        {
            LogHelper.WriteLog(typeof(Program), ex);
        }
        finally
        {
            reader.Close();
        }
        Console.ReadKey();
    }

感觉是内存耗尽了!!!!,具体错误请各位牛帮忙分析一下!!!

为什么不用LOAD DATA INFILE呢,先将A表的数据导出来生成数据文件,再用LOAD DATA INFILE导入到B表。

参考自:
LOAD DATA INFILE用法详解 http://www.data.5helpyou.com/article408.html