求大佬iOS跑进科学大佬秀上网

mysql中迅速插入百万条测试数据的方法
字体:[ ] 类型:转载 时间:
最近想到创建一个大量数据的测试环境,于是找了一下怎么插入100W条数据,我用的是20个字段
对比一下,首先是用 mysql 的存储过程弄的:
代码如下: mysql&delimiter $ mysql&SET AUTOCOMMIT = 0$$ mysql& create procedure test() begin declare 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', ' 09:55:43', 'upload/product/32_53211.jpg', 'upload/product/thumb_32_53211.jpg', 1, 0, 0, 0, 'admin', '0', 0, 0, 0);
set i = i+1; if i= 1000000
$ mysql& mysql&
结果 mysql& 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''\t' 09:55:43'\t'upload/product/32_53211.jpg'\t'upload/product/thumb_32_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中间省略了很多中间步骤,导致插入速度远胜于第一种,具体的没有研究。 快速生成mysql上百万条测试数据由于测试需要,原表中只有1万条数据,现在随机复制插入记录,快速达到100万条。 itemid是主键。 运行几次下面代码。随机取1000条插入, insert into downitems (chid,catid,softid,....) SELECT chid,catid,softid... FROM `downitems` WHERE itemid &= (SELECT floor(RAND() * (SELECT MAX(itemid) FROM `downitems`))) ORDER BY itemid LIMIT 1000; 然后可以修改1000的数字了。改为5000或者1万。很快可以达到100万的数据量了。
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具本帖子已过去太久远了,不再提供回复功能。从数据库中查出100万条数据,放到list中内存溢出这样的问题怎么处理。
我从数据库中查出100万条数据,放到list报内存溢出,如果查出一个字段没事,多个字段就会溢出,我要把查出的数据导成Excel。
jvm提供的空间就这么大,我记的是64m,这么大的数据输出来,溢出是正常的。楼上说的内存映射似乎可行
分页取数据,写入
有点好奇,放了100W的excel准备干什么用
1楼比喻太贴切了
用limit 然后多搞几次。。。
我只想说 这不科学啊
这个我是这么解决,每n条记录导出为一个excel,然后poi操作excel合并多表,至于list,每导出一次清空一下。
100w好像放不到excel中吧,excel最多65535行。
--- 共有 1 条评论 ---
貌似2010后不止了
很好奇100W条记录放在excel做啥
引用来自“南湖船老大”的答案 奇葩啊。
饭量大不是你的错,但非要抱着个盆吃就有点恶趣味了,看上去也比较搞笑。你干嘛不用碗呢,多加几次饭不行吗?
哥们,太形象了

我要回帖

更多关于 跑进科学的大佬秀的歌 的文章

 

随机推荐