表结构如下:
milliontable(
name varchar(10),
age integer,
joindate date
)
,我想在该表中随机插入一百万个数据。有什么办法吗?
答案 0 :(得分:1)
使用random()
函数生成随机值:
INSERT INTO milliontable (name, age, joindate)
SELECT substr(md5(random()::text), 1, 10),
(random() * 70 + 10)::integer,
DATE '2018-01-01' + (random() * 700)::integer
FROM generate_series(1, 1000000);
将一个人的年龄存储在一个表中通常是一个愚蠢的想法,因为随着时间的流逝,这个数字会自动出错。使用生日。
答案 1 :(得分:0)
您可以使用递归查询。首先是从1 to 1M
生成行。然后使用random()
函数生成1到99岁之间的随机年龄。
with recursive cte as (
select 0 as ctr
union all
select ctr + 1 from cte where ctr < 1000000
)
insert into milliontable (name, age, joindate)
select 'name'||cast(ctr as varchar(30)) as name, floor(random()*(99)) as age, current_timestamp as joindate
from cte;
尝试dbfiddle。