PSQL生成随机数据程序

PSQL generate aleatory data procedure

我需要创建一个没有 generate_series 的存储过程,其中可能将 100,000 条记录随机插入到一个简单的 table 中。我留下一个例子 table 所以你可以告诉我你会怎么做

create table test(
  id serial primary key,
  name varchar(20),
  int number,
  birth datetime
);

对于那个 table,您将如何在一个过程中随机生成 100,000 条记录?找了两个小时没找到方法

一个快速而肮脏的解决方案。效率不是特别高。也不确定您实际希望数据是什么样子。还是起点:

create table test(
  id serial primary key,
  name varchar(20),
  number integer,
  birth date
);

DO $$
DECLARE 
    name_val varchar(20);
    number_val integer;
    birth_val date;
BEGIN
    for i in 1..10 LOOP
        name_val = repeat('se', (random() * 10)::int);
        number_val = random() * 1000;
        birth_val = (current_date - (random() * 300)::int) - ((((random() * 10) * 3)::int)::varchar || ' years')::interval;
        INSERT INTO test (name, number, birth) values(name_val, number_val, birth_val);
    END LOOP;
END;
$$
;

select * from test;
 id |         name         | number |   birth    
----+----------------------+--------+------------
  1 | sesesesesesesese     |    376 | 1997-02-16
  2 | se                   |    318 | 2009-02-16
  3 | sesesesese           |    518 | 1997-02-16
  4 |                      |    605 | 1993-02-16
  5 | sesesesesesesesese   |    842 | 1998-02-16
  6 | sesesesesesesese     |    219 | 2015-02-16
  7 | sesesese             |      7 | 2017-02-16
  8 | sesesesesesesesesese |    477 | 2014-02-16
  9 | sesesesesese         |    690 | 2013-02-16
 10 | se                   |    796 | 2011-02-16

出于演示目的做了 1..10 LOOP。