操作系统 :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

欢迎补充

最新文章

  1. 关于在header里增加参数的方式
  2. [WPF系列] window自定义
  3. Page in/Page out/Page fault
  4. 微信公众平台教程和SDK收集
  5. 二、Ubuntu14.04下安装Hadoop2.4.0 (伪分布模式)
  6. LVS 之 DR model arp_announce arp_ignore转
  7. mysql出现Data truncated for column
  8. runat="server"
  9. phpcms中用到的几个重要的代码
  10. Docker集群编排工具之Kubernetes(K8s)介绍、安装及使用
  11. 使用Xshell配置外网访问端口
  12. CentOS随笔——克隆虚拟机
  13. H5手机移动端调起浏览器(qq浏览器,uc浏览器)自带分享功能实例
  14. ubuntu下smokeping安装配置
  15. 新手Python第二天(存储)
  16. HDU step by step
  17. qt 编译的文件没有生效
  18. 安装pip最简单的方法
  19. 不信任的 .exe 怎么办,用 Windows 沙盒啊!
  20. 打开/查找xcode6的沙盒地目录

热门文章

  1. canvas图像保存
  2. 【C++ Primer 第15章】定义派生类析构函数
  3. Word Highlight设置详解
  4. lldp学习
  5. C#编程语法积累(二)
  6. 【AtCoder】ARC080
  7. 6-12 油田 uva572
  8. 【Java】 剑指offer(8) 用两个栈实现队列
  9. Brute-Force算法
  10. 全排列-hdu1716