新手上路,时序数据库InfluxDB命令总是报错,这篇文章不容错过!

初次使用时序数据库InfluxDB,有些概念还是需要了解清楚的,InfluxDB与传统的关系型数据库MySql在使用上有哪些区别呢?

MySql InfluxDB 说明
database database 数据库
table measurement 类似于Mysql中表的概念
field tag + field + timestamp 传统表中的一行数据,在influxdb中,可以划分为三个

数据库 database
数据库,在概念上和关系型数据库MySQL没有什么区别,操作命令也是一样的;只不过,这里的操作命令是influx query language,简称InfluxQL语言;

show databases;  //展示所有的数据库;
create database <dbName>;  //创建数据库;
drop database <dbName>; //删除数据库;
use <dbName>; //使用某个数据库

度量 measurement
在influxdb中,没有表这个说法,只有度量measurement,它的作用相当于表;在使用时也与传统意思上的表大有区别;在MySQL中,需要先创建表,然后才可对表中的数据进行增删改查,一个表中的字段个数也是固定的;在influxdb中,则无需先创建度量measurement,在新增数据时,如果不存在则创建。

show measurements; //显示所有的度量measurement
insert sensorMonitorData,deviceId=001 temperature=15  //新增一个度量,只有一个tag和一个field;
insert sensorMonitorData1,deviceId=001,companyId=001 temperature=15,voltage=12   //新增两个度量,包含两个tags和两个fields;
show tag keys from <tbname> //展示度量中所有的tag;
show field keys from <tbname> //展示度量中所有的field;
select * from <tbname> //展示度量中的数据;
precision rfc3339  //对度量中的时间戳进行格式化处理;
delete from <measurement>  //删除度量中所有的数据
drop measurement  <measurement>    //删除度量

新增语法结构分析:

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

特别说明:
retention policy,保留策略,非必填;
timestamp,时间戳,非必填;不填写时,自动生成;如果要加,在filed后添加空格,再添加时间戳;
tag与tag之间用逗号分隔,由于tag都是string类型,因此不需要加引号;
tag与field之间用空格分隔,field与field之间用逗号分隔;
field有四种类型:int、 float、string、 boolean,每种类型在使用时不一样,所以如果是string类型,需要加引号,否则会报错;

field类型 方式 示例
float 数字 user_id=21
int 数字i age=18i
boolean true/false is_boy=true
String "" or '' email="123456@qq.com"

这里是需要注意的地方,也是新手容易犯错的地方,在使用field时,特别是String类型的field,一定要把field的value用双引号包裹起来,不然新增的时候会报错;不能像使用tag一样使用field。

查询特别说明:
创建的度量名称里,如果有点号时,输入双引号包裹起来,否则会报错。

删除特别说明:
在执行delete from <measurement>语句时,measurement中的数据没有了,measurement也就不存在了,压根就不需要再执行一遍drop measurement <measurement>语句,因此它俩是等价的,但是不知道这个和influxdb的版本有没有关系,这里使用的版本是1.8。

**保留策略 retention policy **
在influxdb里,是没有修改操作的,对数据可以设置保留时长,保存几个备份,以及在数据集群中的处理,这就是保留策略retention policy;

show retention policies on <dbName>  //展示数据库所采用的保留策略;

查询策略说明:
name: 名称;
duration: 保留时间, 0表示永久保存;
shardGroupDuration: shardGroup的存储时间,shardGroup是InfluxDB的一个基本储存结构,大于这个时间的数据,在查询效率上应该有所降低;
replicaN: 全称是replication,副本个数;
default: 是否是默认策略;

create retention policy <retentionName> on <dbName> duration <durationTime> replication <replicaN> default; //新建策略

新增策略说明:
retentionName:策略名称,用双引号包裹起来;
dbName:数据库名称;
durationTime: 保留时间, 0表示永久保存,2h代表两个小时,2d代表2天;
replicaN:全称是REPLICATION,副本个数
default: 是否是默认策略;
保留策略单位一览表:

Units Meaning
ns nanoseconds (1 billionth of a second)
u or µ microseconds (1 millionth of a second)
ms milliseconds (1 thousandth of a second)
s second
m minute
h hour
d day
w week
alter retention policy <retentionName> on <dbName> duration <durationTime> default;//修改策略
alter retention policy "autogen" on test duration 0s default; //恢复默认策略

retentionName:策略名称,用双引号包裹起来;
dbName:数据库名称;
durationTime: 保留时间, 0表示永久保存,2h代表两个小时,2d代表2天;
default: 是否是默认策略;

drop retention policy <retentionName> on  <dbName>; //删除策略

retentionName:策略名称,用双引号包裹起来;
dbName:数据库名称;
特别注意:在删除默认策略前,一定要重新指定一个默认策略,否则新增度量时会报错。

接下来新建一条带有保留策略的数据,先建立一个保留策略,再建立保留策略的数据,看看是不是到了时间就被删除了。



在创建带保留测试数据遇到的问题:

  1. 本来是想建立一条几秒钟就过期的数据,但是报错了,ERR: retention policy duration must be at least 1h0m0s,这条报错提示,过期时间至少一个小时,额,好吧,重新建立一个为时一个小时的保留策略。
  2. 在创建带有策略的数据时,使用insert语句直接报错了,把insert改成insert into正常运行,这说明,在使用默认策略时,语句中不带策略时,使用insert语句,加了策略就必须使用insert into语句;这是需要注意的地方。

还有没有其他命令可以使用,在命令行CMD里,输入help,可以查看更多的命令:



把展示的内容改变为json形式,1个小时前的数据已经被删除了,现在所看到的是一个空的json格式;在新加一条数据,看看查询的结果;

format json; 
select * from person;

InfluxQL语言有以下这些关键字,在创建measurement、tag、field的时候,要避开保留的关键字,否则会报错:

all alter any as asc
begin by create continuous database
databases default delete desc destinations
diagnostics distinct drop duration end
every explain field for from
grant grants group groups in
inf insert into key keys
kill limit show measurement measurements
name offset on order password
policy policies privileges queries query
read replication resample retention revoke
select series set shard shards
slimit soffset stats subscription subscriptions
tag to user users values
where with write

复杂的查询语句

select <field_key>[,<field_key>,<tag_key>] from <tbname> [ into_clause ] [ where_clause ]  
[ group_by_clause ] [ order_by_clause ] [ limit_clause ]  
[ offset_clause ] [ slimit_clause ] [ soffset_clause ] 

查询遇到的问题:

  1. 在执行select height,weight from person where id="0001"语句时,没有返回结果,在执行select height,weight from person where name="ff",直接报错:ERR: error parsing query: found NAME, expected identifier, string, number, bool at line 1, char 40;检查了以下语句,还是和关键词有关系,这个measurement的取名为name的tag,使用了关键字呀!
  2. 在新增语句里,tag的value一定不要加双引号,这个一定得注意,否则条件查询查不出来!!!
  3. 在查询语句的where条件里,tag的value值一定要加单引号,tag的key要加双引号,否则查不出来,也不报错,这个一定得注意!!!
    在where条件里,既可以匹配tag,也可以匹配field,但是它们可以使用的操作符却是不一样的,tag的数据类型是String类型,field则支持四种数据类型;

tag支持的操作符:

操作符 含义
= 等于
<> 不等于
!= 不等于

field支持的操作符:

操作符 含义
= 等于
<> 不等于
!= 不等于
> 大于
>= 大于等于
< 小于
<= 小于等于

更多精彩,还在官方文档:
https://docs.influxdata.com/influxdb/v1.8/query_language/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 162,050评论 4 370
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 68,538评论 1 306
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 111,673评论 0 254
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,622评论 0 218
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 53,047评论 3 295
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,974评论 1 224
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 32,129评论 2 317
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,893评论 0 209
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,654评论 1 250
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,828评论 2 254
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,297评论 1 265
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,619评论 3 262
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,326评论 3 243
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,176评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,975评论 0 201
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 36,118评论 2 285
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,909评论 2 278