SQL使用随机数据填充表

no9*_*no9 49 sql postgresql insert

我有一个包含两个字段的表:

  1. id(UUID)是主键和
  2. 说明(var255)

我想用SQL语句插入随机数据.我希望这种描述是随机的.

PS:我正在使用PostgreSQL.

leo*_*loy 67

我不确切地知道这是否符合"随机描述"的要求,并且不清楚是否要生成完整数据:但是,例如,这会生成10条带有连续ID和随机文本的记录:

  test=#  SELECT generate_series(1,10) AS id, md5(random()::text) AS descr;

     id |               descr
    ----+----------------------------------
      1 | 65c141ee1fdeb269d2e393cb1d3e1c09
      2 | 269638b9061149e9228d1b2718cb035e
      3 | 020bce01ba6a6623702c4da1bc6d556e
      4 | 18fad4813efe3dcdb388d7d8c4b6d3b4
      5 | a7859b3bcf7ff11f921ceef58dc1e5b5
      6 | 63691d4a20f7f23843503349c32aa08c
      7 | ca317278d40f2f3ac81224f6996d1c57
      8 | bb4a284e1c53775a02ebd6ec91bbb847
      9 | b444b5ea7966cd76174a618ec0bb9901
     10 | 800495c53976f60641fb4d486be61dc6
    (10 rows)
Run Code Online (Sandbox Code Playgroud)

  • 为什么不`SELECT generate_series(1,10)AS id,md5(random():: text)AS descr;`? (3认同)

Mak*_*iev 25

以下对我有用:

create table t_random as select s, md5(random()::text) from generate_Series(1,5) s;
Run Code Online (Sandbox Code Playgroud)


3ma*_*uek 14

这是使用最新功能的更优雅的方式.我将使用Unix字典(/ usr/share/dict/words)并将其复制到我的PostgreSQL数据中:

cp /usr/share/dict/words data/pg95/words.list
Run Code Online (Sandbox Code Playgroud)

然后,您可以轻松创建大量无意义的描述,但可以使用字典单词进行搜索,步骤如下:

1)创建表和功能.getNArrayS获取数组中的所有元素,并且需要多次连接.

CREATE TABLE randomTable(id serial PRIMARY KEY, description text);

CREATE OR REPLACE FUNCTION getNArrayS(el text[], count int) RETURNS text AS $$
  SELECT string_agg(el[random()*(array_length(el,1)-1)+1], ' ') FROM generate_series(1,count) g(i)
$$
VOLATILE
LANGUAGE SQL;
Run Code Online (Sandbox Code Playgroud)

完成所有操作后,使用CTE运行插入:

WITH t(ray) AS(
  SELECT (string_to_array(pg_read_file('words.list')::text,E'\n')) 
) 
INSERT INTO randomTable(description)
SELECT getNArrayS(T.ray, 3) FROM T, generate_series(1,10000);
Run Code Online (Sandbox Code Playgroud)

现在,像往常一样选择:

postgres=# select * from randomtable limit 3;
 id |                 description                 
----+---------------------------------------------
  1 | ultracentenarian splenodiagnosis manurially
  2 | insequent monopolarity funipendulous
  3 | ruminate geodic unconcludable
(3 rows)
Run Code Online (Sandbox Code Playgroud)