使用postgresql的游標批量生成資料

2021-09-12 20:07:17 字數 1801 閱讀 1300

需求是給日誌表裡插入資料,資料是一年前的每隔五分鐘生成一條記錄。這裡有個問題是,這條資料的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資料庫,是資料庫的模板,當我們新建立資...