使用PostgreSQL存储时序数据
2024-10-18 15:13:59
操作系统 :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 '',96.05,99.98);
但上述代码第二次执行时会报错,可以通过如下方式解决这个问题并实现数据的写入:
insert into stock_data (stock_id,trans_date,open_price,close_price) values ('sh000001',date '',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
欢迎补充
最新文章
- 关于在header里增加参数的方式
- [WPF系列] window自定义
- Page in/Page out/Page fault
- 微信公众平台教程和SDK收集
- 二、Ubuntu14.04下安装Hadoop2.4.0 (伪分布模式)
- LVS 之 DR model arp_announce arp_ignore转
- mysql出现Data truncated for column
- runat=";server";
- phpcms中用到的几个重要的代码
- Docker集群编排工具之Kubernetes(K8s)介绍、安装及使用
- 使用Xshell配置外网访问端口
- CentOS随笔——克隆虚拟机
- H5手机移动端调起浏览器(qq浏览器,uc浏览器)自带分享功能实例
- ubuntu下smokeping安装配置
- 新手Python第二天(存储)
- HDU step by step
- qt 编译的文件没有生效
- 安装pip最简单的方法
- 不信任的 .exe 怎么办,用 Windows 沙盒啊!
- 打开/查找xcode6的沙盒地目录