我在db中有一个表:
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);
多一点解释。
generate_series将为您提供循环,您还可以访问其生成的值。现在不需要了。
'text' || round(random()*1000) 可以生成类似于“ text-1212”的唯一字符串。
'text' || round(random()*1000)
round(random()*70) -您需要四舍五入,因为random()返回的浮点值介于0和1之间。
round(random()*70)
(ARRAY['f','m'])[round(random())+1] -对于枚举等,构建一个数组并为其生成一个随机索引
(ARRAY['f','m'])[round(random())+1]
now() + round(random()*1000) * '1 second'::interval-获取基准日期并添加随机时间间隔。
now() + round(random()*1000) * '1 second'::interval