首页 > 数据库 > PostgreSQL

使用postgresql 模拟批量数据插入的案例

admin PostgreSQL 2022-02-10 16:16:31 postgresql   批量插入数据"

创建表:

CREATE TABLE t_test(
  ID INT PRIMARY KEY   NOT NULL,
  NAME      TEXT  NOT NULL,
  AGE      INT   NOT NULL,
  ADDRESS    CHAR(50),
  SALARY     REAL
);

模拟批量插入:

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生成数据方法

生成序列

SELECT * FROM generate_series(1,5);

生成date

SELECT date(generate_series(now(), now() + '1 week', '1 day'));

生成integer 随机数

SELECT (random()*(2*10^9))::integer;

生成numeric 随机数

SELECT (random()*100.)::numeric(4,2);

生成字符串

SELECT substr('abcdefghijklmnopqrstuvwxyz',1,(random()*26)::integer);

生成重复串

SELECT repeat('1',(random()*40)::integer);

举例:

SELECT generate_series(1,10) as key,(random()*100.)::numeric(4,2),repeat('1',(random()*25)::integer) ORDER BY random();

结果:

-- 生成随机汉字符串  
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; 

以上为个人经验,希望能给大家一个参考,也希望大家多多支持潘少俊衡。如有错误或未考虑完全的地方,望不吝赐教。

版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。
本文地址:/shujuku/PostgreSQL/106552.html

留言与评论(共有 0 条评论)
   
验证码:

潘少俊衡

| 桂ICP备2023010378号-4

Powered By EmpireCMS

爱享小站

中德益农

谷姐神农

环亚肥料

使用手机软件扫描微信二维码

关注我们可获取更多热点资讯

感谢潘少俊衡友情技术支持