创建表:
1
2
3
4
5
6
7
|
CREATE TABLE t_test(
ID INT PRIMARY KEY NOT NULL ,
NAME TEXT NOT NULL ,
AGE INT NOT NULL ,
ADDRESS CHAR (50),
SALARY REAL
);
|
模拟批量插入:
1
|
insert into t_test SELECT generate_series(1,5000000) as key ,repeat( chr(int4(random()*26)+65),4), (random()*(6^2)):: integer , null ,(random()*(10^4)):: integer ;
|
解释:
其中:
1、generate_series(1,5000000),表示生成一个数值序列,从1到5000000,步进为一。
generate_series作用可见下表:
2、repeat: 重复生成字符串的函数
repeat(s,n)返回一个由重复的字符串s组成的字符串,n表示重复生成的次数。若n<=0,则返回一个空字符串;若s或n为null,则返回null。
3、
select (random()*(6^2))::integer :随机数字 十位不超过6的两位数
select (random()*(10^4))::integer; 四位数
结果:
补充:postgresql 生成测试数据
此处,我简单的写一个例子,供参考(在Postgresql9.1下面做的):
(1)准备知识
针对 Postgres生成数据方法
生成序列
1
|
SELECT * FROM generate_series(1,5);
|
生成date
1
|
SELECT date (generate_series(now(), now() + '1 week' , '1 day' ));
|
生成integer 随机数
1
|
SELECT (random()*(2*10^9)):: integer ;
|
生成numeric 随机数
1
|
SELECT (random()*100.):: numeric (4,2);
|
生成字符串
1
|
SELECT substr( 'abcdefghijklmnopqrstuvwxyz' ,1,(random()*26):: integer );
|
生成重复串
1
|
SELECT repeat( '1' ,(random()*40):: integer );
|
举例:
1
|
SELECT generate_series(1,10) as key ,(random()*100.):: numeric (4,2),repeat( '1' ,(random()*25):: integer ) ORDER BY random();
|
结果:
1
2
3
4
5
6
7
8
9
10
11
12
|
-- 生成随机汉字符串
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;
|
以上为个人经验,希望能给大家一个参考,也希望大家多多支持服务器之家。如有错误或未考虑完全的地方,望不吝赐教。
原文链接:https://blog.csdn.net/qq_35462323/article/details/109614195