如何在VB.NET中增加最大加载文件大小?

时间:2016-05-03 08:11:56

标签: mysql sql .net vb.net sqlyog

我有一个控制台可以将sample.txt文件加载到数据库的Table中,但是当sample.txt文件大小超过4000kb时,它会失败。如何超越极限?我认为默认限制是4096kb。

当我在MYSQL中运行SQL查询时,它成功地将所有数据插入表中。

 strSql = "LOAD  DATA LOCAL INFILE 'D:\\sample.txt'" & _
                " INTO TABLE TABLENAME" & _
                " FIELDS TERMINATED BY '|'" & _
                " LINES TERMINATED BY '\n'" & _
                " IGNORE 1 LINES" & _
                " (NO,MESSAGE);"


Func: ExecSQL|   at MySql.Data.MySqlClient.NativeDriver.SendFileToServer(String filename)
at MySql.Data.MySqlClient.NativeDriver.ReadResult(UInt64& affectedRows, Int64& lastInsertId)
at MySql.Data.MySqlClient.MySqlDataReader.GetResultSet()
at MySql.Data.MySqlClient.MySqlDataReader.NextResult()
at MySql.Data.MySqlClient.MySqlCommand.ExecuteReader(CommandBehavior behavior)
at MySql.Data.MySqlClient.MySqlCommand.ExecuteReader()
at MySql.Data.MySqlClient.MySqlCommand.ExecuteNonQuery()
at MNC.COM.DBConn.ExecSQL(String strSQL)|MySql.Data|Error during LOAD DATA LOCAL INFILE|LOAD  DATA LOCAL INFILE 'D:\\sample.txt' INTO TABLE FILE_RECORD_LOG_TEST FIELDS TERMINATED BY '|' LINES TERMINATED BY '\n' IGNORE 1 LINES (NO,MESSAGE);

2 个答案:

答案 0 :(得分:0)

我建议您检查服务器和客户端上的max_allowed_pa​​cket设置,以确保它们匹配。

您将“限制”报告为4096K的事实,以及堆栈跟踪似乎在“SendFileToServer”上报告问题的事实使得它听起来像是max_allowed_pa​​cket中可能不匹配。

另外,我将它与read_buffer_size进行比较。

 SELECT @@global.max_allowed_packet
      , @@session.max_allowed_packet
      , @@global.read_buffer_size
      , @@session.read_buffer_size

要验证的另一件事是服务器上的temp目录中有足够的空间。 (使用LOCAL,文件将被传输到服务器,并将进入操作系统的临时目录( tmpdir变量中指定的目录。如果空间不足,则为LOAD) DATA将因错误而失败。

您报告该语句正在使用一个小(< 4MB)文件的事实使得您的语法看起来是正确的,如果您正在添加您期望的行。

我还会检查较大文件中的行分隔符是否与较小文件中的行分隔符相同。

我们没有看到的是来自MySQL服务器的实际错误消息

我不熟悉VB.NET。但我相信MySQLException类提供了“Number”和“Error”成员,它们将分别返回MySQL错误号和消息。

答案 1 :(得分:0)

问题解决

我使用旧版本MySql.Data.dll,使用最新版本6.7.4.0后工作正常,可以将大量数据加载到数据库中。

感谢所有