将100万个随机数据插入PostgreSQL

时间:2019-12-04 06:07:42

标签: postgresql

表结构如下:

milliontable(
   name varchar(10),
   age integer,
   joindate date
)

,我想在该表中随机插入一百万个数据。有什么办法吗?

2 个答案:

答案 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