Home >Database >Mysql Tutorial >迅速插入百万条mysql测试数据_MySQL

迅速插入百万条mysql测试数据_MySQL

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOriginal
2016-06-01 13:49:191139browse

bitsCN.com

最近想到创建一个大量数据的测试环境,于是找了一下怎么插入100W条数据,我用的是20个字段。对比一下,首先是用 mysql 的存储过程弄的:

mysql>delimiter $mysql>SET AUTOCOMMIT = 0$$mysql> create  procedure test() begindeclare i decimal (10)  default 0 ;dd:loop        INSERT INTO `million` (`categ_id`, `categ_fid`, `SortPath`, `address`, `p_identifier`, `pro_specification`, `name`, `add_date`, `picture_url`, `thumb_url`, `is_display_front`, `create_html_time`, `hit`, `buy_sum`, `athor`, `templete _style`, `is_hot`, `is_new`, `is_best`) VALUES(268, 2, '0,262,268,', 0, '2342', '423423', '123123', '2012-01-09 09:55:43', 'upload/product/20111205153432_53211.jpg', 'upload/product/thumb_20111205153432_53211.jpg', 1, 0, 0, 0, 'admin', '0', 0, 0, 0);   commit;   set i = i+1;   if i= 1000000 then leave dd;    end if;   end loop dd ;end;$mysql>delimiter ;mysql> call test;

 

结果

mysql>  call test; Query OK, 0 rows affected (58 min 30.83 sec)

非常耗时。

于是我又找了一个方法

先用PHP代码生成数据,再导入:

<?php $t=mktime();set_time_limit(1000);$myFile="e:/insert.sql";$fhandler=fopen($myFile,'wb');if($fhandler){    $sql="268/t2/t'0,262,268,'/t0/t '2342'/t'423423'/t'123123'/t'23423423'/t'2012-01-09 09:55:43'/t'upload/product/20111205153432_53211.jpg'/t'upload/product/thumb_20111205153432_53211.jpg'/tNULL/tNULL/t38/t'件'/t''/t123/t123/t0";    $i=0;    while($i<1000000)//1,000,000    {        $i++;        fwrite($fhandler,$sql."/r/n");    }    echo"写入成功,耗时:",mktime()-$t;}

然后再导入

LOAD DATA local INFILE 'e:/insert.sql' INTO TABLE  tenmillion(`categ_id`, `categ_fid`, `SortPath`, `address`, `p_identifier`, `pro_specification`, `name`, `description`, `add_date`, `picture_url`, `thumb_url`, `shop_url`, `shop_thumb_url`, `brand_id`, `unit`, `square_meters_unit`, `market_price`, `true_price`, `square_meters_price`);

 

注意字段不再以逗号分割,以/t分割,条记录以/r/n分割。结果我插入10次数据,100W平均只要1分钟搞定。

第二种方式mysql中间省略了很多中间步骤,导致插入速度远胜于第一种,具体的没有研究。

bitsCN.com
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn