postgres使用存储过程批量插入数据的操作
  • 作者:admin
  • 发表时间:2021-04-30 07:51
  • 来源:未知

这篇文章主要介绍了数据库使用存储过程批量插入数据的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

参考官方文档

创造或取代函数creatData2()返回

布尔如同

$BODY$

声明二整数;

开始

II:=1;

用于二进制一.10000000 LOOP

插入IPM _ model _ history _ data(RES _ model,res_id)值(116,ii);

结束循环;

返回真正的

结束;

$BODY$

语言plpgsql

从creatData2()中选择*作为选项卡;

插入一千万条数据耗时610s,当然字段不多的情况下。

补充:Postgresql存储过程-更新或者插入数据

要记录某一时段机器中央处理器、内存、硬盘的信息,展示的时间粒度为分钟,但是为了精确,输入数据源的时间粒度为6s。这个统计过程可以在应用层做好,每分钟插入一次,也可以在数据库层写个存储过程来完成,根据传入数据的时间来判断是更新数据库旧数据还是插入新数据。

同时,这些数据只需要保留一周,更老的数据需要被删除。删除动作可以每天定时执行一次,也可以写在存储过程中每次检查一下。

考虑到性能在此时没什么太大约束,而后面存储过程的接口方式更漂亮些,不用应用层去关心数据到底组织成什么样,因此实现了一个如下:

Postgresql V8.3

创建或替换函数插入_主机_状态(_日志_日期时间戳不带时区,_主机inet,_cpu整数,_mem整数,_磁盘整数)

返回无效的如同

$BODY$

宣布

不带时区的新开始(_ s)时间戳;

不带时区的当前开始时间时间戳;

c_id整数;

不带时区的c_log_date时间戳;

c_cpu整数;

c_mem整数;

c _ disk整数

铜锡锌合金板(导航板的缩写)唐山百度优化;c_count整数;

日期(_span)间隔;

开始

-插入或更新

选择id,log_date,cpu,mem,disk,count INTO c_id,c_log_date,c_cpu,c_mem,c_disk,c _ count FROM host _ status _ BY minute WHERE host=_ host ORder BY id desc限制1;

SELECT timestamp_mi(_log_date,c _ log _ date)INTO date _ span;

如果日期='00:00:60 '或c_id为空,则

插入主机状态分钟(log_date,主机,cpu,mem,磁盘,计数)值(_log_date,_host,_cpu,_mem,_disk,1);

表达式日期_span='-00:00:60 '然后

c _ mem :=((c _ mem * c _ count)_ mem)/(c _ count 1);

c _ CPU :=((c _ CPU * c _ count)_ CPU)/(c _ count 1);

c _ disk :=((c _ disk * c _ count)_ disk)/(c _ count 1);