需求是給日誌表裡插入資料,資料是一年前的每隔五分鐘生成一條記錄。這裡有個問題是,這條資料的id和建立時間都是不同的,所以可以使用generate_series() 函式來得到每隔五分鐘的時間,然後將查詢到的資料返回給游標,開始迴圈遍歷游標,v_id作為每條記錄的id號,並且遞增。
create or replace function cursor_demo()
returns refcursor as
$body$
declare
unbound_refcursor cursor for select generate_series(to_date('20180307','yyyymmdd'), to_date('20180324','yyyymmdd'), '5 m');
v_id int;
v_createtime timestamp;
begin
v_id := 121589;
open unbound_refcursor ;
loop
fetch unbound_refcursor into v_createtime;
if found then
insert into tbl_system_log("id","user_id","username","url","request_method","host","content","operation","create_date","device_mac")
values( v_id,13,'admin','/system/login','post','192.168.0.103','登入成功','登入',v_createtime,'70:b3:d5:c1:25:d7') ;
else
exit;
end if;
v_id = v_id +1;
end loop;
close unbound_refcursor;
raise notice 'the end of msg...';
return unbound_refcursor;
exception when others then
raise exception 'error--(%)',sqlerrm;
end;
$body$
language plpgsql;
然後執行查詢語句就可以生成資料
select cursor_demo();
下面是簡單的批量生成資料
create or replace function proc_user () returns void as $$
begin
for i in 106001..107000 loop
insert into tbl_system_log("id","user_id","username","url","request_method","host","content","operation","create_date","device_mac")
values (i,13,'admin','/system/login','post','192.168.0.103','登入成功','登入',to_timestamp('2018-03-22 21:21:21.4','yyyy-mm-dd hh24:mi:ss.ms'),'70:b3:d5:c1:25:d7') ;
end loop ;
end $$
language 'plpgsql';
select proc_user ();
為何使用 PostgreSQL
五年以前,我寫了乙個 為何你應使用postgresql 的岾子,引起了廣泛的關注。一年以後,我增加了一些我漏寫的內容,這些內容我會在這篇文章的後半部分重述一下要點。但是在最近的4 5年,postgresql有了很多的改進和提高,也就有了更多的理由我們為何要使用它。現在這裡是乙個新的總結,為何你應使用...
PostgreSQL使用zhparser自定義分詞
zhparser是pg的乙個中文全文檢索外掛程式,它基於簡單中文分詞 scws 實現中文解析器。我們在使用zhparser時常常會遇到的乙個問題就是 我們想要分詞的詞語無法被識別。例如 bill select from ts parse zhparser 支付寶使用很方便 tokid token 1...
PostgreSQL使用大全
持續更新中 1.初始postgresql資料庫集群 initdb d datapath 使用該命令會建立乙個資料庫集群,用於管理多個資料庫,同時當初始化資料庫集群時,會建立共享的表,同時會建立template1和postgres兩個資料庫。對於template1資料庫,是資料庫的模板,當我們新建立資...