使用PostgreSQL存储时序数据
操作系统 :CentOS7.3.1611_x64
PostgreSQL版本 :9.6
问题描述
在InfluxDB中存储时序数据时,当tag值和时间戳都相同时会执行覆盖操作。在PostgreSQL中能不能这么用呢?
解决方案
可以借助唯一索引和update来实现,这里记录下以备后用。
1、创建带有唯一索引的表,比如:
drop table if exists stock_data; create table stock_data ( id bigserial primary key, stock_id varchar(32), trans_date date, open_price decimal, close_price decimal ); create unique index stock_idx on stock_data(stock_id,trans_date);
这里创建一个stock_data表,并创建唯一索引stock_idx。
2、写入数据
insert into stock_data (stock_id,trans_date,open_price,close_price) values ('sh000001',date '19901219',96.05,99.98);
但上述代码第二次执行时会报错,可以通过如下方式解决这个问题并实现数据的写入:
insert into stock_data (stock_id,trans_date,open_price,close_price) values ('sh000001',date '19901219',196.05,199.98) on conflict(stock_id,trans_date) do update set open_price=excluded.open_price,close_price=excluded.close_price;
好,就这些了,希望对你有帮助。
本文github地址:
https://github.com/mike-zhang/mikeBlogEssays/blob/master/2017/20171118_使用PostgreSQL存储时序数据.rst
欢迎补充
分类:
数据库
标签:
PostgreSQL
, 数据库
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
2012-11-18 用python扩展snmp
2011-11-18 python中dict和lambda结合的小例子