簡單的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