我有一些問題。
我在下面有一張小桌子:
CREATE TABLE person (
person_id SERIAL PRIMARY KEY,
first_name TEXT NOT NULL,
last_name TEXT NOT NULL,
patronymic TEXT,
birth_date TIMESTAMP,
photo_id INTEGER UNIQUE
);
我需要檢查我的一些腳本如何處理大量資料。所以我需要用 PostgreSQL 工具生成大量隨機資料。喜歡
INSERT INTO MY_TABLE(id,name,...)
SELECT id, md5(random()::text)
FROM generate_series(1,100) id;
但是我怎么能用 TIMESTAMP 和 INTEGER UNIC 來做呢?
uj5u.com熱心網友回復:
例如:
INSERT INTO person (id, name, ..., birth_date, photo_id)
SELECT g AS id
, md5(random()::text) AS name
, ...
, LOCALTIMESTAMP - interval '100 years' * random() AS birth_date
, g 12345 AS photo_id -- also UNIQUE
FROM generate_series(1,100) g;
為什么timestamp而不是date為了"birth_date"?
uj5u.com熱心網友回復:
生成隨機的外星人姓名、出生日期、照片身份證
CREATE TABLE person ( person_id SERIAL PRIMARY KEY, first_name TEXT NOT NULL, last_name TEXT NOT NULL, patronymic TEXT, birth_date DATE, photo_id INTEGER UNIQUE );
CREATE OR REPLACE FUNCTION base26_encode(IN digits bigint, IN min_width int = 0) RETURNS varchar AS $$ DECLARE chars char[]; ret varchar; val bigint; BEGIN chars := ARRAY['A','B','C','D','E','F','G','H','I','J','K','L','M' ,'N','O','P','Q','R','S','T','U','V','W','X','Y','Z']; val := digits; ret := ''; IF val < 0 THEN val := val * -1; END IF; WHILE val != 0 LOOP ret := chars[(val % 26) 1] || ret; val := val / 26; END LOOP; IF min_width > 0 AND char_length(ret) < min_width THEN ret := lpad(ret, min_width, '0'); END IF; RETURN ret; END; $$ LANGUAGE 'plpgsql' IMMUTABLE;
INSERT INTO person ( first_name, last_name, patronymic, birth_date, photo_id ) SELECT initcap(base26_encode(substring(random()::text,3,10)::bigint)) as first_name , initcap(base26_encode(substring(random()::text,3,15)::bigint)) as last_name , initcap(base26_encode(substring(random()::text,3,9)::bigint)) as patronymic , 'now'::date - (interval '90 years' * random()) AS birth_date , ceil(random()*2100000000) as photo_id FROM generate_series(1,10) num;
select * from person order by person_id
| person_id | 名 | 姓 | 父名 | 生日 | photo_id |
|---|---|---|---|---|---|
| 1 | Cgdmyty | bvmvzwflixr | Bxqseru | 1975-04-30 | 735546878 |
| 2 | Fnvbyvm | gfcfcfqmqzf | 德德夫魯 | 1994-08-05 | 1001397097 |
| 3 | Bcwpzckn | Dbotgnxawv | Ntvguj | 1978-04-23 | 2061692939 |
| 4 | 奧特克 | 戈爾杜斯特 | 比德溫 | 2006-06-07 | 1237488926 |
| 5 | yvgsydx | Bsctpuizkfu | dljgzg | 1996-06-14 | 513060685 |
| 6 | 貝克菲普 | 紐倫克德 | 切森克 | 1937-04-02 | 821299133 |
| 7 | tmofbgf | 呲牙咧嘴 | 查迪亞夫 | 2004-10-10 | 1112427504 |
| 8 | 布加奧 | 庫阿日夫qmvp | 比亞瓦多 | 1935-05-05 | 1401285419 |
| 9 | 貝克爾克 | Gblvvxkxbel | 司杜茲普 | 2017-12-31 | 715217821 |
| 10 | Bakcxfzn | Jfvmbyvawt | bftbpyz | 1985-01-12 | 1415422286 |
db<>在這里擺弄
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/406931.html
標籤:
下一篇:如何更新相關表MYSQL?
