2012-02-10 63 views
0

我试图加载大数据文件,例如10 MB文件到数据库使用加载数据本地INFILE到MySQL使用Windows服务。但是它失败了,windows服务没有任何异常就停止了。我尝试使用2 MB等小尺寸文件,并成功完成。无法使用加载数据infile本地到mysql加载大文件

有没有什么办法可以将大文件加载到mysql数据库中?而Windows服务停止的原因可能是什么?

这里是我的代码..

public int UpdateDataBase(string query, string filename, Logger swLog) 
    { 
     int status = 0; 

     using (MySqlConnection myconnection = new MySqlConnection(connectionCdrBank)) 
     { 

      try 
      { 
       myconnection.ConnectionTimeout = 1000; 
       myconnection.Open(); 
       myconnection.BeginTransaction(); 

       MySqlCommand mycommand = new MySqlCommand("ClearTempTable", myconnection); 
       mycommand.CommandType = CommandType.StoredProcedure; 
       status = mycommand.ExecuteNonQuery(); 

       MySqlCommand mycommand1 = new MySqlCommand(query, myconnection); 
       mycommand1.CommandTimeout = 1000; 
       status = mycommand1.ExecuteNonQuery(); 

       MySqlCommand mycommand2 = new MySqlCommand("InsertToCdrDetailsTempTable", myconnection); 
       mycommand2.CommandType = CommandType.StoredProcedure; 
       mycommand2.CommandTimeout = 1000; 
       status = Convert.ToInt32(mycommand2.ExecuteScalar()); 

       myconnection.Commit(); 
       myconnection.Close(); 

      } 
      catch (Exception ex) 
      { 
       Console.WriteLine("Error:" + ex.Message); 
       if (myconnection.State == ConnectionState.Open) 
        myconnection.Rollback(); 
       status = (ex.Message.IndexOf("Duplicate entry") != -1) ? -1000 : 0; 
       swLog.WriteErrorToLog(""); 
       swLog.WriteErrorToLog("Error while saving: " + ex.Message); 
       mail.SentMail("Error while saving:", ex.Message); 
       swLog.CloseLogger(); 
      } 
     } 

     return status; 
    } 

哪里查询

LOAD DATA LOCAL INFILE 'a.txt' INTO TABLE tbl_cdrload" FIELDS TERMINATED BY ',' LINES  TERMINATED BY '\n'; 
+0

错误日志中是否有相关条目? 10MB不是一个巨大的文件加载。我定期从很多GB文件加载数据。 – nnichols 2012-02-10 17:44:56

+0

什么都没有记录......实际上,当我试图调试service.It它不会抛出异常,它只是停止Windows服务。 – Jay 2012-02-10 17:55:49

回答

1

我加载高达100个MB的文件到MySQL BLOB字段。这只是我的人为限制。

因此,10MB文件不应该是一个问题。

您是否正确设置了max_allowed_pa​​cket?

你用什么来加载文件?你自己的代码或一些工具?什么MySQL连接器?

+0

我正在执行它作为从c#代码的mysql文本命令。我使用devart连接到mysql.And我们可以在哪里设置这个max_allowed_pa​​cket? – Jay 2012-02-10 18:10:16

+0

Google是你的朋友... http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html 如果你有MySQL Workbench,它是一个服务器网络设置。 – Remy 2012-02-10 18:21:49

+0

尝试将max_allowed_pa​​cket设置为更大的值。但仍然是同样的问题...这里是我的代码....我已更新我的代码 – Jay 2012-02-10 18:49:14