快速向表中插入一亿条数据方法(转)

1、先找个种子表,记录越多越好。与表中数据内容无关,因为我们只需要它的记录数。这里我用到的种子表是tb_dj_d_portcall,大约有3万条数据。
2、建立要产生1亿条记录的数据表
[sql]
create table Number
(indexNO int not null auto_increment primary key,
number INT);
[/sql]
3、向表中插入数据
[sql]
insert into Number(indexNO,number)
select null,(rand()*100+1) as number
from smis.tb_dj_d_portcall;
[/sql]
你会发现number表中产生了和种子表中总数量相同的记录,但数据内容为随机生成的。
4、继续插入,用cross join自连接:
[sql]
insert into Number(indexNO,number)
select null,(rand()*100+1) as number
from number t1
cross join number t2;
[/sql]
这一步可以生成记录数为种子表的乘方,重复执行可以插入大量随机数据,不过有一点要注意:确保你的服务器可以承受这么大的数据量,还有日志表,可能会被填满,要注意增加日志空间。
我选的种子表有3万条数据,第四步仅执行了一次,就产生了30000×30000=900000000条数据,呵呵!生成大量测试数据,这是最简单的情况,仅仅对单表生成没有任何关联的数据。复杂一点的还有象父子表,表中数据存在逻辑关系等,会稍微麻烦一点,就不多说了。

发布日期:
分类:Mysql

发表评论

邮箱地址不会被公开。 必填项已用*标注