2010-10-25 68 views
5

我正在通过LOAD DATA将大文本文件加载到我的数据库中。该文件长约122,000行。更不用说,数据库被设计为在该表上的AFTER INSERT之后被触发。究竟情况是,查询开始执行,执行保持像15-20分钟,然后返回LOAD DATA LOCAL INFILE失去连接,我该如何解决超时问题?

Error Code: 2013 
Lost connection to MySQL server during query 

然后

Error Code: 2006 
MySQL server has gone away 

后出现错误,我重新执行查询,并将其马上结束;

0 row(s) affected 
Records: 122574 Deleted: 0 Skipped: 122574 Warnings: 0 

而且表格确实是导入的;

select * from quote 
122574 row(s) returned 

我在Mac OS X 10.6.4运行mysqld时51年1月5日,我的查询是

LOAD data local INFILE 
     '/Users/ash/quotes/data.txt' 
     INTO TABLE quote fields 
     TERMINATED BY ',' ENCLOSED BY '' LINES TERMINATED BY '\r\n' 
      (quote.date,quote.ticker,quote.open, 
      quote.high,quote.low,quote.close,quote.volume,@market) 
      SET market = 'sp'; 

看来DB-连接超时,我该如何解决这个问题?

+0

您可能会考虑删除AFTER INSERT,而是在文件加载后批量执行其操作。 122K行,特别是只有几个数字列,每个列都是* tiny *,实际上最多只需要几秒钟...... – user359996 2011-09-28 00:56:25

回答

0

您可以通过在启动mysqld时设置wait_timeout变量来更改时间限制。请参考MySQL documentation