在mysql中导入70MB csv文件大约需要70个小时?

时间:2014-10-23 21:55:27

标签: mysql import phpmyadmin large-files

我正在尝试导入一个70MB的csv文件(如果有任何区别,则分隔的空间) 它由大约600万行组成,每行包含2个数字(2列)。

导入1 MB的文件大约需要1个小时,该文件有大约一百万行。 我尝试使用phpmyadmin(CSV)的导入功能,并尝试使用Bigdump,但两者几乎都在同一时间。

我担心的是,如何将一个简单的70 MB文件加载到数据库中这么长时间(2天半)?那么,如果导入本身需要这么长时间,使用数据库有什么意义呢?

我把max_memory_size = 1280 MB,所以我认为70mb文件没有任何内存问题。我在我的本地主机上这样做,我也试过我部门的服务器。即使使用bigdump.php并且没有互联网速度问题也花费相同的时间

1 个答案:

答案 0 :(得分:2)

通过禁用某些检查,并使用导入速度明显更快的LOAD DATA,可以提高批量插入的效率;例如

SET autocommit=0;
SET unique_checks=1;
SET foreign_key_checks=0;

  LOAD DATA INFILE myfile.txt ESCAPED BY ' '
  INTO TABLE mytable

SET unique_checks=1;o
SET foreign_key_checks=1;
COMMIT

可以找到更多信息;

它花了这么长时间的事实可能需要你调查潜在的问题。

  • 创建一个空的MyISAM表并将该数据导入到此表中?这明显加快了吗?如果是这样,您可能有一个次优的配置innodb数据库。
  • 使用MyISAM表检查INSERT INTO FROM SELECT查询的执行情况,确保禁用文本,如果这仍然很慢,那么几乎肯定会有磁盘问题。