Influxdb基础指令


指令忽略大小写

数据库操作

查询数据库

show databases

_internal数据库为influxDB用来存内部运行指标的数据库

使用数据库

use database

创建数据库

CREATE DATABASE database

创建数据库会使用默认的数据保存策略,也可以自己新建。一个库可以有多个保存策略

数据库中一条记录包含如下:

  1. time: 一个时间戳
  2. measurement: 度量指标(类似于一般数据库中的表)
  3. field: 至少一个字段,是一个key-value类型,用于保存真正的值.不会为field创建索引
  4. tags: 为一条记录打一个标签,可以有0个或多个.tags会创建索引 tag必须是字符类型 值需要加引号

删除数据库

DROP DATABASE database

存储策略操作

当一个表使用的策略不是默认策略时,在进行操作时一定要显式的指定策略名称

查询存储策略

SHOW RETENTION POLICIES ON database

新建存储策略

CREATE RETENTION POLICY "autogen" ON "database" DURATION 2h REPLICATION 1 DEFAULT

在 database 数据库创建名为 autogen 持续时间 2小时 副本个数 1 的默认存储策略

修改存储策略

ALTER RETENTION POLICY "autogen" ON "database" DURATION 4h DEFAULT

删除存储策略

drop retention POLICY "autogen" ON "database"

用户权限操作

查询用户

show users

创建用户

CREATE USER "username" WITH PASSWORD 'password'

创建管理员权限的用户

CREATE USER <username> WITH PASSWORD '<password>' WITH ALL PRIVILEGES

删除用户

DROP USER "username"

表操作

查询表名

show measurements

新增表

INSERT measurements,sensorId=101000102,status=0,saveTime=2019-12-23\ 00:00:00 value=3 1600653383879282000
插入数据时,生成对应的表
INSERT 表名,tag1= ,tag2= field1= ,field2= time
tag,field 通过空格隔开,tag与tag 通过 逗号隔开,field与tag 相同。time 为时间戳,可以不填

修改表

新增表后,已有的字段类型不可变,新增的字段根据insert 语句生成

删除表

drop measurement measurements

数据操作

新增

INSERT 表名,tag1= ,tag2= field1= ,field2= time
tag,field 通过空格隔开,tag与tag 通过 逗号隔开,field与tag 相同。time 为时间戳,可以不填
INSERT measurements,sensorId=101000102,status=0,saveTime=2019-12-23\ 00:00:00 value=3 1600653383879282000

新增到指定保存策略

INSERT into "策略名" his_entryday,uepId=1010001,value=-0.2685 dataTime="2019-12-23 00:00:00"

修改

不支持修改

删除

只允许根据tag和时间来进行删除操作
DELETE FROM <database> WHERE [<tag_key>='<tag_value>'] | [<time interval>]

DELETE FROM "measurements" WHERE time >= '2020-09-21T15:16:45Z' - 8h and time <= '2020-09-21T16:55:46Z' - 8h

查询

SELECT last("value") AS "value" FROM "test"."autogen"."measurements" WHERE time >= '2020-09-21T15:16:45Z' - 8h and time <= '2020-09-21T16:55:46Z' - 8h GROUP BY time(1m),sensorId FILL(0)

time因为时差问题,需要 - 8h

函数

  1. GROUP BY time(1m) 根据时间 1m 进行聚合,无数据的数据为空
    GROUP BY time(1m) 外添加 select count(*) from 取数据数量会导致空数据不计入数据行数,用FILL() 会导致count数异常

  2. FILL(0) 将空数据自动填充 0

  3. LIMIT 子句,返回查询结果的前N条points。(不同的Series都包含N条points)
    SLIMIT 返回指定measurement的前N个series的所有point。(N个Series包含所有points,需要与group by 一块使用)
    当LIMIT 和SLIMIT 一起使用时,表示的意思是查询指定measurement前N个series的前N个point。

一些概念

  1. Point
    Point由时间戳(time)、数据(field)、标签(tags)组成。
    Point相当于传统数据库里的一行数据,如下表所示:
    Point属性 传统数据库中的概念
    time 每个数据记录时间,是数据库中的主索引(会自动生成)
    fields 各种记录值(没有索引的属性)
    tags 各种有索引的属性
  2. Series
    Series 相当于是 InfluxDB 中一些数据的集合,在同一个 database 中,retention policy、measurement、tag sets 完全相同的数据同属于一个 series,同一个 series 的数据在物理上会按照时间顺序排列存储在一起。
  3. 特殊字符和单双引号的使用
    • insert
      • 时间戳不要双或单引号。
      • field value不要单引号,即时是字符串类型。
      • 当field value是整数,浮点数或是布尔型时,不要使用双引号,不然InfluxDB会假定值是字 符串类型:
      • 当Field value是字符串时,使用双引号
      • measurement名称,tag keys,tag value和field key不用单双引号。InfluxDB会假定引号是 名称的一部分。
    • select
      • tag value 只能用单引号
    • 特殊字符
      • 对于tag key,tag value和field key,始终使用反斜杠字符\来进行转义:
        例 逗号 /,
        空格 /空格
        等号 /=

示例

目前使用sql ,可以正常分页

  1. 分组数据:
    select * from (SELECT last("value") AS "value" FROM "test"."autogen"."measurements" WHERE time >= '2020-09-21T15:16:45Z' - 8h and time <= '2020-09-21T16:55:46Z' - 8h GROUP BY time(1m),a)GROUP BY a
  2. 数据总量
    select count(*) from (SELECT last("value") AS "value" FROM "test"."autogen"."measurements" WHERE time >= '2020-09-21T15:16:45Z' - 8h and time <= '2020-09-21T16:55:46Z' - 8h GROUP BY time(1m),a)

参考

influxDB中文文档

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值