我在数据库中有一个表:
CREATE TABLE operation ( <br>
id integer NOT NULL DEFAULT NEXTVAL ('seq_operation'),( <br>
phone_number varchar(30),( <br>
age integer,( <br>
gender char(1),( <br>
isActive boolean,( <br>
date_of_surgery timestamp,( <br>
);
我需要插入 10000 行随机数据。我怎样才能做出这样的 INSERT 语句?我对这些东西很新鲜,并试图用这里类似问题的其他答案来解决它,但找不到对我来说容易理解的答案。
我将衷心感谢您的帮助。
此致,
最大限度
我通常使用这样的 psql:
INSERT INTO table (values, to, fill)
SELECT random(), random(), random() from generate_series(1,10000);
在你的情况下,这将是:
INSERT INTO operation (
phone_number,
age,
gender,
isActive,
date_of_surgery
) SELECT
'some-phone-' || round(random()*1000), -- for text
round(random()*70), -- for integer
(ARRAY['f','m'])[round(random())+1], -- for char/enum
(ARRAY[false,true])[round(random())+1], -- for boolean
now() + round(random()*1000) * '1 second'::interval -- for timestamps
FROM generate_series(1,10000);
多一点解释。
生成系列 https://www.postgresql.org/docs/current/static/functions-srf.html将为您提供循环,您也可以访问
它产生的价值。现在不需要这些了。
'text' || round(random()*1000)
可以生成类似于“text-1212”的唯一值
字符串。
round(random()*70)
- 你需要四舍五入,因为 random() 返回一个
0 到 1 之间的浮点值。
(ARRAY['f','m'])[round(random())+1]
- 对于枚举等,构建一个
数组并为其生成随机索引
now() + round(random()*1000) * '1 second'::interval
- 获得基线
日期并添加随机时间间隔 https://www.postgresql.org/docs/9.6/static/functions-datetime.html.
(fiddle http://sqlfiddle.com/#!17/ea665/1)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)