influxdb簡易操作

簡單的influxdb操作教學

TimeSerial VS SQL

Influxdb SQL
Database Database
Measurement Table
Points Data Rows

1.先看看所有的資料庫

show databases

 

2.建立一個資料庫mydb

create database mydb

 

3.檢查是否有建立成功

show databases

 

4.使用資料庫

use mydb

 

5.加入資料

Influxdb的measuremet不需要先建立,也不用設定資料欄位,insert以後就可以用了。
注意! INSERT時不要加任何的單引號或雙引號,有興趣可以自己配合select玩看看。

 insert command有四個重要元素

  • 目標measurement
  • tag <tag1-key>=<tag1-value>,<tag2-key>=<tag2-value> 如果有複數個tag時以逗點隔離
  • field <field1-key>=field1-value>,<field2-key>=field2-value>如果有複數個field時以逗點隔離
  • time 格式為timestamp,單位us,可以不加。(influxdb會自動加上server時間)

以下示範measurement為meter,tag-key為meter及place,field-key為volume及comsumption

--插入資料到時間(2018-06-15 08:30:00)

INSERT meters,meter=gas,place=6F-1 volume=123.456,consumption=3 1529051400000000000

--插入資料到時間(2018-06-15 08:45:00)

INSERT meters,meter=gas,place=6F-1 volume=124.456,consumption=1 1529052300000000000

--插入資料到時間(2018-06-15 09:00:00)

INSERT meters,meter=gas,place=6F-1 volume=125.456,consumption=1 1529053200000000000

--插入資料到時間(2018-02-19 23:13:20)

INSERT meters,meter=gas,place=6F-1 volume=125.456,consumption=1 1519053200000000000

--不加時間的話,influxdb會自動加上insert的時間點

INSERT meters,meter=water,place=6F-1 volume=112.456,consumption=0.9

INSERT meters,meter=power,place=6F-1 volume=981.456,consumption=0.9

INSERT meters,meter=IdontCare volume=981.456

 

Insert Syntax

insert <measurement>[,<tag-key>=<tag-value>...] <field-key>=<field-value>[,<field2-key>=<field2-value>...] [unix-nano-timestamp]

Timestamp coverter help

https://www.epochconverter.com/

網站上轉出來的timestamp只有到秒 要在自行加上9個0

給人看得 Timestamp(單位:秒) Timestamp(單位:奈秒ns)
2018-06-15T09:00:00 1529024400 1529024400000000000

6.show measuremts列表

 show measuremts

 

7.show serise

show series from meters

 

 

8.select points

注意!! Select時所有的measurement ,tag-key,field-key都要加"雙引號",而且如果tag-value 或是field-value是字串的話要加上'單引號'
--將meter裡面的point全部show出來
select * from "meters"

--依照tag來select所需資料
select "meter","place","volume" from "meters" where "meter"='gas'

--依照tag來select所需資料並且限制只要這七天內的資料
select "meter","place","volume" from "meters" where "meter"='gas' and time > now() - 7d

--將資料全部平均
select mean("consumption") from "meters" where "meter"='gas' and time > now() - 7d

--將資料加總
select sum("consumption") from "meters" where "meter"='gas' and time > now() - 7d

--將資料平均並且改成以小時為單位
select mean("consumption") from "meters" where "meter"='gas' and time > now() - 7d group by time(1h) fill(0)

--將資料加總並且改成以小時為單位
select sum("consumption") from "meters" where "meter"='gas' and time > now() - 7d group by time(1h) fill(null)

--指定select特定的時間段的資料
select * from "meters" where "meter"= 'gas' and time >= '2018-06-01T00:00:00Z' and time <= '2018-06-30T00:00:00Z'

Syntax

SELECT INTEGRAL( [ * | <field_key> | /<regular_expression>/ ] [ , <unit> ]  ) [INTO_clause] FROM_clause [WHERE_clause] [GROUP_BY_clause] [ORDER_BY_clause] [LIMIT_clause] [OFFSET_clause] [SLIMIT_clause] [SOFFSET_clause]

時間單位表示:

w:周d:天h:小時m:分鐘s:秒

 

9.刪除measurement

drop measurement meters

 

10.刪除資料庫

drop database mydb