Influx Sql系列教程六:insert 修改数据

在influxdb中没有专门的修改数据的update语句,对于influxdb而言,如果想修改数据,还是得使用我们前面的说到的insert来实现,那么怎么判断一条insert语句是插入还是修改呢?

1. insert数据修改

关于insert的使用语法,可以参考上一篇博文:190726-Influx Sql系列教程五:insert 添加数据

这里只是贴一下基本语法

insert into <retention policy> measurement,tagKey=tagValue fieldKey=fieldValue timestamp

如果我们希望修改一条数据,比如修改既有的field,或者增加/删除field时,我们需要指定具体的时间戳和tag

下面是一个简单的修改演示

> select * from add_test where time=1564149327925320596
name: add_test
time                age boy email            name  phone user_id
----                --- --- -----            ----  ----- -------
1564149327925320596         [email protected] YiHui 110   20
> show tag keys from add_test
name: add_test
tagKey
------
name
phone
> insert add_test,name=YiHui,phone=110 user_id=20,email="[email protected]",boy=true,age=18i 1564149327925320596
> select * from add_test where time=1564149327925320596
name: add_test
time                age boy  email            name  phone user_id
----                --- ---  -----            ----  ----- -------
1564149327925320596 18  true [email protected] YiHui 110   20

在上面的case中,我们执行的的insert语句来修改某条已有的记录时,有几个参数必须存在

  • time: 指定为要要改记录的时间戳
  • tag: 所有的tag都必须和要修改的数据一致 name=YiHui,phone=110

然后field的内容,会增量修改之前的数据,如下

> insert add_test,name=YiHui,phone=110 boy=true,age=19i 1564149327925320596
> select * from add_test where time=1564149327925320596
name: add_test
time                age boy  email            name  phone user_id
----                --- ---  -----            ----  ----- -------
1564149327925320596 19  true [email protected] YiHui 110   20

通过上面的insert,可以动态新增field,但是如果我希望删除field怎么办?

  • 目前提供的influxdb sql中没有找到删除field的方式,一个可供选择的方式就是把原来的记录删掉;然后再重新插入一条

如果需要修改tag怎么办?

  • 前面的case已经表明,修改记录是根据 time + tag values来唯一定位记录,然后执行删除的,如果你需要修改一个tag,对insert语句而言就是新增了一个point;这个时候可以考虑由自己来删除旧的数据

II. 其他

0. 系列博文

参考博文

1. 一灰灰Blog: https://liuyueyi.github.io/hexblog

一灰灰的个人博客,记录所有学习和工作中的博文,欢迎大家前去逛逛

2. 声明

尽信书则不如,已上内容,纯属一家之言,因个人能力有限,难免有疏漏和错误之处,如发现bug或者有更好的建议,欢迎批评指正,不吝感激

3. 扫描关注

一灰灰blog

原文地址:https://www.cnblogs.com/yihuihui/p/11386685.html

时间: 2024-10-07 11:05:47

Influx Sql系列教程六:insert 修改数据的相关文章

Influx Sql系列教程九:query数据查询基本篇二

前面一篇介绍了influxdb中基本的查询操作,在结尾处提到了如果我们希望对查询的结果进行分组,排序,分页时,应该怎么操作,接下来我们看一下上面几个场景的支持 在开始本文之前,建议先阅读上篇博文: 190813-Influx Sql系列教程八:query数据查询基本篇 0. 数据准备 在开始查询之前,先看一下我们准备的数据,其中name,phone为tag, age,blog,id为field > select * from yhh name: yhh time age blog id name

Influx Sql系列教程八:query数据查询基本篇

前面几篇介绍了InfluxDB的添加,删除修改数据,接下来进入查询篇,掌握一定的SQL知识对于理解本篇博文有更好的帮助,下面在介绍查询的基础操作的同时,也会给出InfluxSql与SQL之间的一些差别 在开始之前,先看一下供查询的数据 > show measurements name: measurements name ---- yhh > select * from yhh name: yhh time age blog id name phone ---- --- ---- -- ---

Influx Sql系列教程七:delete 删除数据

前面介绍了使用insert实现新增和修改记录的使用姿势,接下来我们看一下另外一个简单的使用方式,如何删除数据 1. delete 语句 delete的官方语法如下 DELETE FROM <measurement_name> WHERE [<tag_key>='<tag_value>'] | [<time interval>] delete语句和我们常见sql语法有点像,但是注意一下上面的where中的条件,只允许根据tag和时间来进行删除操作 下面给出几个

Influx Sql系列教程五:insert 添加数据

接下来开始进入influxdb的curd篇,首先我们看一下如何添加数据,也就是insert的使用姿势 在进入本篇之前,对于不了解什么是retention policy, tag, field的同学,有必要快速过一下这几个基本概念,可以参考文后的系列教程 I. Insert 使用说明 基本语法 insert into <retention policy> measurement,tagKey=tagValue fieldKey=fieldValue timestamp 1. 基本写数据姿势 当m

Influx Sql系列教程二:retention policy 保存策略

retention policy这个东西相比较于传统的关系型数据库(比如mysql)而言,是一个比较新的东西,在将表之前,有必要来看一下保存策略有什么用,以及可以怎么用 I. 基本操作 1. 创建retention policy retention policy依托于database存在,也就是说保存策略创建时,需要指定具体的数据库,语法如下 CREATE RETENTION POLICY <retention_policy_name> ON <database_name> DUR

Influx Sql系列教程四:series/point/tag/field

influxdb中的一条记录point,主要可以分为三类,必须存在的time(时间),string类型的tag,以及其他成员field:而series则是一个measurement中保存策略和tag集构成:本篇教程将介绍一些这几个概念 1. tag influxdb数据结构中记录元数据(metadata)的kv对,不要求必须存在,tag key/value 都是字符串类型,而且会建立索引,因此基于tag进行查询效率比单纯的基于field进行查询是要高的:后续的一些sql也会发现,某些查询只能基于

Influx Sql系列教程三:measurement 表

在influxdb中measurement相当于mysql中的表,可以理解为一条一条记录都是存与measurent中的,一个数据库中可以有多个measurement,一个measurement中可以存很多的数据.虽然可将measurement类比为mysql中的表,但是他们之间的差别也挺明显的 首先我们先了解一下measurement的几个常用命令,如何查看.新增删除 1. show measurements 查看一个数据库中有哪些measurement,属于常规操作了 先确定数据库 执行sho

Influx Sql系列教程零:安装及influx-cli使用姿势介绍

influxdb 时序数据库,因为实际业务中使用到了,然而并没有发现有特别好的文章,完整的介绍influx sql的使用姿势,因此记录下实际开发中学习的体会,主要参考来自于官方文档 Influx Query Language (InfluxQL) influx已经推出2.0beta版本,并没有使用,后面的所有都是以1.7版本进行说明 I. 安装 安装教程,直接参考官网链接,installing-influxdb-oss,下面只介绍centos/macos两个操作系统的安装姿势 1. centos

Influx Sql系列教程一:database 数据库

对于influxdb而言,database和我们更熟悉的mysql中的dababse没有什么特别的区别,可以将数据库简单理解为一堆表(measurement)的集合,接下来我们将看一下在influxdb中,database的常规操作 1. 查看当前数据库 如果需要查询当前有哪些数据库,可以通过show语句来实现 show database 上面的_internal是内置的数据库 2. 创建数据库 create database yhh 创建一个名为yhh的数据库 3. 使用数据库 如果需要查询某