带有随机插入的 PostgreSQL 循环

2024-03-24

我在数据库中有一个表:

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(使用前将#替换为@)

带有随机插入的 PostgreSQL 循环 的相关文章

随机推荐