在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
创建表: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; 以上为个人经验,希望能给大家一个参考,也希望大家多多支持极客世界。如有错误或未考虑完全的地方,望不吝赐教。 |
请发表评论