PostgreSQL批量生成测试数据

顺序值

atlasdb=# select id from generate_series(1,10) t(id);  
 id   
----  
  1  
  2  
  3  
  4  
  5  
  6  
  7  
  8  
  9  
 10  
(10 rows)  

generate_series 可以指定最大值,最小值,递增值。也可以生成时间等类型

atlasdb=# \df generate_series
                                                              List of functions
   Schema   |      Name       |         Result data type          |                        Argument data types                         | Type 
------------+-----------------+-----------------------------------+--------------------------------------------------------------------+------
 pg_catalog | generate_series | SETOF bigint                      | bigint, bigint                                                     | func
 pg_catalog | generate_series | SETOF bigint                      | bigint, bigint, bigint                                             | func
 pg_catalog | generate_series | SETOF integer                     | integer, integer                                                   | func
 pg_catalog | generate_series | SETOF integer                     | integer, integer, integer                                          | func
 pg_catalog | generate_series | SETOF numeric                     | numeric, numeric                                                   | func
 pg_catalog | generate_series | SETOF numeric                     | numeric, numeric, numeric                                          | func
 pg_catalog | generate_series | SETOF timestamp without time zone | timestamp without time zone, timestamp without time zone, interval | func
 pg_catalog | generate_series | SETOF timestamp with time zone    | timestamp with time zone, timestamp with time zone, interval       | func
(8 rows)

随机数

atlasdb=# select random()  from generate_series(1,10);
       random       
--------------------
  0.799458883237094
  0.047981650128836
  0.211289744824171
  0.909943440463394
  0.795472401659936
  0.780012475326657
  0.568553290329874
  0.434846977703273
  0.192123426124454
  0.605796394404024
(10 rows)

random()生成值为双精度浮点数,范围 0 <= random() < 1

生成指定范围的整数:min+(random()*(max-min))::integer

atlasdb=# select 5+(random()*(7-5))::integer from generate_series(1,10);  
 ?column? 
----------
        5
        6
        5
        5
        7
        6
        6
        6
        6
        7
(10 rows)

随机字符串

方案1:

# 生成指定长度的字符串
create or replace function f_random_str(length INTEGER) 
returns character varying AS $$
DECLARE
    result varchar(50);
BEGIN
    SELECT array_to_string(ARRAY(SELECT chr((65 + round(random() * 25)) :: integer)
    FROM generate_series(1,length)), '') INTO result;
    
    return result;
END;
$$ LANGUAGE plpgsql;

方案2:利用md5函数

md5(random()::text)  

例如:


atlasdb=# select md5(random()::text),f_random_str(5) from generate_series(1,10);
               md5                | f_random_str 
----------------------------------+--------------
 a56bcf9d7f81780019042a67064a9c0e | NDOGV
 dec8db00b3059650f7ab7f22d004069e | WQLBH
 d20997f727a1d567ee0705d54b305474 | KOWVJ
 0056c14bcd1455d6f53515cddcbfe1fa | NXRBH
 04fb3acae29234381b9b96611af8ad94 | QVBBN
 b933eb17c3deb2a4391873ca95cc9288 | QBJFH
 2d8361fd230cd34d0038c4340553d27d | BDVME
 925004f93aa3541b43e8168aff77fc62 | TOQQK
 a7f4a7e36792310f561bf861d09cc80d | MXYEZ
 d3d4f6b1777d3015be4fd9f38876da4f | EQCFR
(10 rows)

重复字符串

repeat('abc', 10)  

例如:

atlasdb=# select repeat(f_random_str(5),3) from generate_series(1,10);
     repeat      
-----------------
 XDODDXDODDXDODD
 UHTWLUHTWLUHTWL
 LMWTDLMWTDLMWTD
 RHAQVRHAQVRHAQV
 BLWGJBLWGJBLWGJ
 RBXDFRBXDFRBXDF
 NBJCENBJCENBJCE
 LVKFSLVKFSLVKFS
 WQFTKWQFTKWQFTK
 ILRICILRICILRIC
(10 rows)

随机中文

create or replace function gen_hanzi(int) returns text as $$    
declare    
  res text;    
begin    
  if $1 >=1 then    
    select string_agg(chr(19968+(random()*20901)::int), '') into res from generate_series(1,$1);    
    return res;    
  end if;    
  return null;    
end;    
$$ language plpgsql strict;

例如:

atlasdb=# select gen_hanzi(10) from generate_series(1,10);
      gen_hanzi       
----------------------
 狶用裻羾愪諮夛鞳店蓝
 譣鞇县跆硠銚巖眐韎盍
 訂锕短峂销淼椚煟閴篁
 尰椅元霫髃摮艳吹屼錊
 謖駟諬郖蠀控菋韖買篴
 滾眔煤飫藖暿杂佌訞嵑
 紌顎硖聏返獴隽犢禭厔
 昈攟齳兏噐蟍曶谚翾合
 桪佗紜诎驂捎勨懟撙輇
 焯鎥螰鮅瑐矟潕歨鲁鬂
(10 rows)

使用

atlasdb=# create table testdata(id integer,name varchar(20),course int,grade numeric(4,2),testtime date,note text);
CREATE TABLE
atlasdb=# insert into testdata 
atlasdb-# select generate_series(1,100) as id,
atlasdb-# f_random_str(3+(random()*5)::integer) as name,
atlasdb-# (random()*100)::integer as course,
atlasdb-# (random()*99)::numeric(4,2) as grade,
atlasdb-# now() - ((random()*1000)::integer||' day')::interval as testtime,
atlasdb-# gen_hanzi(3+(random()*5)::integer) as note; 
INSERT 0 100
atlasdb=# select * from testdata;
 id  |   name   | course | grade |  testtime  |       note       
-----+----------+--------+-------+------------+------------------
   1 | GGLHI    |     13 | 59.61 | 2019-03-07 | 蔱澪豇抨寓蛤矶
   2 | YUBJ     |     64 | 72.51 | 2018-07-18 | 戇覃璢廣
   3 | XMWITG   |     46 | 35.76 | 2018-07-24 | 儋襫鵆斳
   4 | RUDPPEY  |     24 | 87.59 | 2018-08-08 | 增偗酚榁蜷
   5 | UPBOVNX  |     14 | 71.70 | 2016-10-20 | 蛃戵貋殤刹雟鵇
   6 | BYWXGG   |      6 | 27.58 | 2019-04-03 | 鷵蹦帅紽鋖
   7 | KJROCQK  |     78 | 87.08 | 2018-12-05 | 騊叻圵紲
   8 | CMBI     |     70 | 10.63 | 2017-10-21 | 眦粚笈蜪娲渹猨
   9 | TDCVTN   |     62 | 63.53 | 2017-07-09 | 糋貵锗婗陙騺耮
  10 | GIBVCOKQ |     25 | 55.26 | 2019-05-11 | 圣越量彁聄繣褺
  11 | GLZU     |     19 | 85.19 | 2016-10-18 | 軖糏京
  12 | WBW      |     97 | 58.88 | 2018-08-21 | 銙錈肮稦鰫溓
  13 | EAYWG    |     20 | 31.12 | 2018-10-11 | 眉嗦鲽
  14 | WNPXLQ   |     81 | 38.91 | 2018-10-18 | 黈厰髿
  15 | PXAZCB   |     95 | 95.38 | 2018-09-07 | 撮睛娴趶
  16 | DJMQYL   |      8 | 57.14 | 2018-10-11 | 进椷玖開撐
  17 | MEC      |     47 | 24.36 | 2019-02-21 | 弛沃箂痉闞
  18 | HMVQYMO  |     40 | 54.48 | 2019-01-10 | 侼鮪鵤畓醐扏
  19 | ILQURS   |     20 | 87.24 | 2019-02-15 | 氖黃玕臰璘擳捑
  20 | TVVIY    |     49 | 32.18 | 2016-11-22 | 远譣衉歋卤
  21 | ZVUS     |      4 | 68.55 | 2017-02-19 | 勺酃挖蛫昵稉鰼
  22 | HUPPTCX  |     68 | 55.27 | 2017-06-06 | 携唛眀澞呕
  23 | GUKXQ    |     19 | 96.67 | 2018-02-27 | 蓾诪黢膕眿
  24 | KDWE     |     20 | 79.37 | 2017-01-22 | 祄晦偧聞轥爅蚴
  25 | RMOO     |     14 | 73.23 | 2017-11-25 | 嶘悾欐峕鑓鑏
  26 | HYJLE    |     15 | 31.78 | 2016-11-23 | 肚鮿旼灛渟麰
  27 | BMDQQV   |     19 | 21.73 | 2019-04-15 | 系惣攲熥蛝
  28 | KBBOFJ   |     49 | 85.68 | 2016-10-14 | 嬀浖鉢娋鰑
  29 | QCNGXSM  |     98 | 14.68 | 2019-04-15 | 煍痂顧齘
  30 | YALEJYA  |     32 | 39.14 | 2018-12-20 | 愄枡葈塵魜詫菫
  31 | RKRQ     |     53 | 72.10 | 2017-01-13 | 従跷鲝嚟訡鸢簠閳
  32 | NWRXB    |     38 | 14.30 | 2018-06-03 | 摀枒跑
  33 | NLIFDVXZ |     82 | 13.62 | 2017-04-27 | 懛眸豞迻浅囁桻
  34 | TGIE     |     38 | 67.90 | 2018-11-22 | 龑鶣緑砐焭韙
  35 | OTQNOTH  |     36 |  1.23 | 2017-03-24 | 郿崖惔姕
  36 | AKTET    |     46 | 34.83 | 2018-04-16 | 梸龚鵸该韎
  37 | IRIVGC   |     13 | 59.21 | 2019-02-28 | 裧飔均鮻匄籆鰷爚
  38 | DFUMP    |     26 | 78.73 | 2017-09-26 | 笭硾颐鏐
  39 | GRLI     |     81 |  1.83 | 2018-04-23 | 詪桩鏏蚀浭灰茓
  40 | TTBOGQU  |      3 | 26.11 | 2019-04-16 | 踇鲍熾鳡嵼堌
  41 | NXKXR    |     15 | 22.88 | 2017-12-19 | 聊鯞症爬衬抯璥
  42 | MDCN     |     38 | 14.21 | 2019-02-24 | 嚡秞壿昜
  43 | NUPXSH   |      7 | 92.53 | 2017-03-21 | 竵误湒鼡璶茂琡證
  44 | PVQY     |     99 | 74.56 | 2019-01-15 | 斷摸淔
  45 | UFOSWUUV |     62 | 69.62 | 2018-05-25 | 嘗氓鏻謘鈴
  46 | WLLNKL   |     29 | 53.00 | 2017-12-14 | 逮馣禅羐圩咄
  47 | AWDVN    |     83 | 19.84 | 2016-12-09 | 籯豣蔟滾汜箼醆酛
  48 | GHK      |     76 | 79.55 | 2016-10-04 | 覗睋屉鋁総眺
  49 | MQRALWX  |     38 | 43.41 | 2017-07-24 | 鋌刽肐
  50 | WSWEDQ   |     95 |  8.04 | 2018-10-30 | 緭添硦尗霶殤
  51 | NBRZXP   |     37 | 33.73 | 2018-09-14 | 峸枭净鎥嶟
  52 | TIWKHYP  |     96 | 53.54 | 2019-06-02 | 蠾靟銿汉炰
  53 | BKTQTDW  |     20 | 29.77 | 2018-11-19 | 媌涷伀靗
  54 | WHAVXYJ  |     90 | 44.03 | 2019-03-03 | 敩珚悕嬨盫自骑
  55 | KBAP     |     36 | 19.90 | 2017-01-23 | 縟镥潌枎诼蜞
  56 | PPHYN    |     73 |  6.90 | 2018-07-31 | 禋秂屽
  57 | EDE      |     58 | 16.87 | 2018-12-26 | 磷歰募僫
  58 | XLHREPHT |     87 | 26.55 | 2018-09-27 | 榖管耆锡喾躂
  59 | HXCVCGBP |     58 | 10.61 | 2017-09-04 | 兞咣軝觺恔沽
  60 | YGH      |     22 | 83.14 | 2017-09-10 | 狱眐镐懎潝奰娔
  61 | ZGRBV    |     27 | 14.33 | 2018-02-26 | 崰穹绠餪賍鶝魃
  62 | FGYBWSN  |     37 | 60.42 | 2017-05-12 | 譅鞔抲詷堲鬞越
  63 | FXKBDYPB |     73 | 58.91 | 2016-10-01 | 遬徤炪锭唯
  64 | KMTD     |     25 | 51.71 | 2019-04-28 | 捶嬶牄兛圬
  65 | YNRCMI   |     10 | 21.07 | 2016-12-18 | 蕲蠑昐
  66 | PKHY     |     85 |  3.67 | 2019-02-23 | 箪奇繇
  67 | HBWKRVX  |     38 | 89.14 | 2018-04-07 | 乂臲絖咭枿旂
  68 | KWTRV    |     60 | 71.40 | 2016-11-05 | 擨呮敻噣泪桢
  69 | UAUSKREC |     70 | 78.12 | 2017-08-12 | 嚈鯁媬碿酷颧廷
  70 | NXPFFR   |     50 | 30.92 | 2019-04-01 | 撺鏈錒叜綱戋貁
  71 | IMNZGQY  |     40 | 15.27 | 2017-04-28 | 殎煙釀旃儶
  72 | NSO      |     81 | 78.04 | 2018-05-26 | 艾念孑
  73 | MXYU     |     39 | 48.53 | 2017-04-14 | 域裰停摵痮榼
  74 | XEXYFL   |     69 | 75.49 | 2018-10-05 | 夥椱垍欚皂
  75 | VLIPU    |     80 | 39.14 | 2018-03-13 | 垓瓷巜羀邳釠礢麊
  76 | MFFEYLQ  |     10 | 75.52 | 2017-04-29 | 挤圃撹藓瀪
  77 | MFHYDKL  |     33 |  1.15 | 2018-10-05 | 稔悮餱偨
  78 | DFKNV    |     49 | 29.87 | 2017-09-21 | 篇覰悡懵娶埝諁毩
  79 | RNUDV    |     83 | 35.63 | 2016-09-13 | 縐颷湃侃俺
  80 | KOLXWC   |     86 | 42.12 | 2017-03-20 | 蒲鰆庪
  81 | IPDVL    |     22 | 65.03 | 2018-09-24 | 茦肂尔簸伡嶗
  82 | PPECNA   |     14 | 35.96 | 2018-03-17 | 牳坈韥茝礖悊掄臃
  83 | RVS      |     94 | 43.71 | 2018-06-10 | 耡馌紉辸砙嶂
  84 | RGXRK    |     28 | 12.97 | 2018-06-18 | 懺拤河贏畮舶漭
  85 | IHGHSP   |     84 | 31.65 | 2017-12-24 | 堮兼缩祸蠜
  86 | LKHSNPL  |     77 | 85.98 | 2017-02-25 | 檱琺鯖限輯忂
  87 | CXSX     |     24 | 25.45 | 2018-07-19 | 智饔靻仰跬
  88 | KBCYQ    |     53 | 70.80 | 2017-12-25 | 捧閜酟徙豇
  89 | LWRJQP   |     60 | 86.94 | 2016-11-21 | 岇錬铄嵷腳徎绺蔘
  90 | OIUG     |     86 | 17.40 | 2018-01-02 | 且觜皟胾宒涺栨
  91 | AXDWVC   |      7 | 68.94 | 2016-10-22 | 梨寥鏏丛
  92 | KIHQF    |     46 | 16.69 | 2016-11-20 | 鞟炍咘厌遆
  93 | PVISS    |     17 | 79.24 | 2017-04-20 | 讯側帢馔陃帽涍
  94 | NRXS     |     12 |  9.89 | 2017-08-24 | 丣叟莽厮阥勘
  95 | SKJKOE   |     19 | 42.65 | 2016-11-18 | 腎鎱嚂醋
  96 | KJXI     |      8 |  2.69 | 2018-04-14 | 罞瀘辒捶症蘒桏
  97 | KSNU     |     27 | 68.46 | 2016-09-12 | 肒彾梞璞柿媄
  98 | SNPAPQL  |     33 | 24.84 | 2017-02-01 | 石榾邧鉁
  99 | FOAAU    |     70 |  0.92 | 2018-01-12 | 怿鈑蹾稿麔
 100 | GMDHCT   |     70 | 41.70 | 2019-05-16 | 竹禃雉毺氟泦
(100 rows)

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,922评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,591评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,546评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,467评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,553评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,580评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,588评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,334评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,780评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,092评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,270评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,925评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,573评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,194评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,437评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,154评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,127评论 2 352

推荐阅读更多精彩内容

  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 3,231评论 0 4
  • ORA-00001: 违反唯一约束条件 (.) 错误说明:当在唯一索引所对应的列上键入重复值时,会触发此异常。 O...
    我想起个好名字阅读 5,293评论 0 9
  • http://python.jobbole.com/85231/ 关于专业技能写完项目接着写写一名3年工作经验的J...
    燕京博士阅读 7,566评论 1 118
  • 第3章 基本概念 3.1 语法 3.2 关键字和保留字 3.3 变量 3.4 数据类型 5种简单数据类型:Unde...
    RickCole阅读 5,118评论 0 21
  • 一起摄影的一位张姐姐给看了她的一组瑜伽照片,我心中顿生羡慕之心。 我也是练了瑜伽的人,但是,没有张姐姐练...
    肖瑞艳阅读 393评论 2 2