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閱讀 227,488評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,034評論 3 414
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,327評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,554評論 1 307
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,337評論 6 404
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,883評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 42,975評論 3 439
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,114評論 0 286
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,625評論 1 332
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,555評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,737評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,244評論 5 355
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 43,973評論 3 345
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,362評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,615評論 1 280
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,343評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,699評論 2 370

推薦閱讀更多精彩內容

  • 第5章 引用類型(返回首頁) 本章內容 使用對象 創建并操作數組 理解基本的JavaScript類型 使用基本類型...
    大學一百閱讀 3,259評論 0 4
  • ORA-00001: 違反唯一約束條件 (.) 錯誤說明:當在唯一索引所對應的列上鍵入重復值時,會觸發此異常。 O...
    我想起個好名字閱讀 5,375評論 0 9
  • http://python.jobbole.com/85231/ 關于專業技能寫完項目接著寫寫一名3年工作經驗的J...
    燕京博士閱讀 7,601評論 1 118
  • 第3章 基本概念 3.1 語法 3.2 關鍵字和保留字 3.3 變量 3.4 數據類型 5種簡單數據類型:Unde...
    RickCole閱讀 5,142評論 0 21
  • 一起攝影的一位張姐姐給看了她的一組瑜伽照片,我心中頓生羨慕之心。 我也是練了瑜伽的人,但是,沒有張姐姐練...
    肖瑞艷閱讀 406評論 2 2