注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

星期五

明天不上班

 
 
 

日志

 
 
关于我

一个特立独行的Java程序员,比较宅,上上网,写博客,听音乐,看电影。

网易考拉推荐

Postgresql 生成测试数据4  

2011-12-28 23:24:37|  分类: Postgresql |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
这时需要生成带time_stamp_gmt的数据
先看表结构 (这时的表结构带  time_stamp_gmt)
CREATE TABLE host_snap_2
(
host_name character varying(255) NOT NULL,
time_stamp timestamp without time zone NOT NULL,
time_stamp_gmt bigint,
cpu_ut numeric(9,2) DEFAULT NULL::numeric
)


使用新的存储过程

CREATE OR REPLACE FUNCTION generate_test_data(pk text, pk_value text, table_name text, start_time timestamp,

num int, step interval)
RETURNS void AS
$$
DECLARE
query_sql text :='';
insert_sql text :='';
insert_sql_temp text :='';
insert_sql_1 text :='';
insert_sql_2 text :='';
column_info record;
type_name name :='';
column_name name :='';
time text :='';
time_stamp timestamp;
BEGIN

-- 根据表名查出各列的类型和列名
query_sql := 'select t.typname as type, a.attname as name from pg_class c, pg_attribute a, pg_type t
where c.relname = '''|| table_name ||''' and a.attnum > 0 and a.attrelid = c.oid and a.atttypid = t.oid';
-- 组成插入语句
insert_sql_1 := 'insert into '||table_name||'(';
insert_sql_2 := 'values(';

for column_info in execute(query_sql) loop

type_name := column_info.type;
column_name := column_info.name;
--根据类型或列名写表达式拼insert语句
if column_name = pk then
insert_sql_1 := insert_sql_1 || column_name ||',';
insert_sql_2 := insert_sql_2 || pk_value ||',';
elsif column_name = 'time_stamp_gmt' then
insert_sql_1 := insert_sql_1 || column_name ||',';
insert_sql_2 := insert_sql_2 || '####' ||',';
elsif type_name = 'numeric' then
insert_sql_1 := insert_sql_1 || column_name ||',';
insert_sql_2 := insert_sql_2 || '(random()*(100))::integer'||',';
elsif type_name = 'varchar' then
insert_sql_1 := insert_sql_1 || column_name ||',';
insert_sql_2 := insert_sql_2 || 'substr(''abcdefghijklmnopqrstuvwxyz'',1, (random()*26)::integer)'||',';
elsif type_name = 'timestamp' then
insert_sql_1 := insert_sql_1 || column_name ||',';
insert_sql_2 := insert_sql_2 || 'timestamp '||'''@@@@''' ||',';
end if;

end loop;

--insert语句生成OK
insert_sql_1 := substring(insert_sql_1 from 1 for char_length(insert_sql_1)-1)||')';
insert_sql_2 := substring(insert_sql_2 from 1 for char_length(insert_sql_2)-1)||')';
insert_sql := insert_sql_1 ||' '||insert_sql_2;
insert_sql_temp := insert_sql;
raise notice '%',insert_sql;

time_stamp := start_time;

for i in 1..num loop
time := time_stamp::text;
raise notice '%',time;
insert_sql := replace(insert_sql, '@@@@', time);
insert_sql := replace(insert_sql, '####', (to_time_stamp_gmt(time_stamp, 8)::text));

raise notice '%',insert_sql;
execute(insert_sql);
insert_sql := insert_sql_temp;
time_stamp := time_stamp + step;
end loop;


END;
$$
LANGUAGE 'plpgsql';

测试运行结果:(生成100 条数据 起始时间是 2011-12-28 23:33:00 时间间隔是 1分钟 的host2的cpu 利用率)
select generate_test_data('host_name','''host2''','host_snap_2', timestamp '2011-12-28 23:33:00' , 100, interval '1 minute');

Postgresql 生成测试数据4 - 星期五 - 星期五


假数据已经成功生成,下来就可以直接测试页面。
  评论这张
 
阅读(625)| 评论(0)
推荐

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017