欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

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

程序员文章站 2022-05-25 13:50:56
...
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代码生成数据,再导入:

然后再导入

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
相关标签: mysql