时序数据库IoTDB可实现的基本操作及命令汇总
一、数据写入、删除与导出
1.1 数据写入
在物联网场景下,元件产生的数据通常会自动写入。但有时,需要修改过去的数据,可以使用 INSERT
语句插入修改后的值,覆盖原数据。
示例:
INSERT INTO root.BHSFC.Q1.W003(timestamp, speed) VALUES(1657472400000, 2);
1.2 数据删除
1.2.1 SQL语句删除
-
删除整个时间序列:
DELETE FROM root.BHSFC.Q1.W003.speed;
-
删除时间范围内的数据:
DELETE FROM root.BHSFC.Q1.W003 WHERE time <= 2022-01-14T00:00:00;
1.2.2 TTL自动删除
TTL(Time To Live)是数据存活时间,可以针对存储组设置。设置TTL后,Apache IoTDB将自动删除此时间之前的数据。
-
设置TTL:
SET TTL TO root.BHSFC.Q1.W003 3600000;
-
取消TTL:
UNSET TTL TO root.BHSFC.Q1.W003;
-
显示TTL:
SHOW ALL TTL;
1.3 数据导出
可以使用CSV工具将数据导出。
示例:
./export-csv.sh -h 127.0.0.1 -p 6667 -u root -pw root -td ./
输入查询语句,如:
SELECT AVG(*) FROM root.BHSFC.Q1.W002;
二、元数据管理
元数据是关于数据的组织、数据域及其关系的信息。IoTDB支持全面的元数据管理,包括TsFile管理、存储组管理、时间序列管理、元数据模板管理和节点管理。
2.1 TsFile管理
TsFile是Apache IoTDB自研的列式存储文件格式。
-
删除TsFile:
REMOVE '/path/to/tsfile';
-
加载TsFile:
LOAD '/path/to/tsfile' autoregister=false,sglevel=1,verify=true;
2.2 存储组管理
-
创建存储组:
CREATE STORAGE GROUP root.ln;
-
查看存储组:
SHOW STORAGE GROUP;
-
删除存储组:
DELETE STORAGE GROUP root.BHSFC;
-
统计存储组数量:
DELETE STORAGE GROUP root.BHSFC;
2.3 时间序列管理
-
创建对齐时间序列:
CREATE ALIGNED TIMESERIES root.ln.wf01(status BOOLEAN encoding=PLAIN compressor=SNAPPY, temperature FLOAT encoding=PLAIN compressor=SNAPPY);
-
查询时间序列:
SHOW TIMESERIES;
-
删除时间序列:
DELETE TIMESERIES root.ln.wf01.temperature;
-
统计时间序列总数:
COUNT TIMESERIES root.**;
2.4 元数据模板管理
-
创建元数据模板:
CREATE SCHEMA TEMPLATE t1 ALIGNED (1 FLOAT encoding=Gorilla, 2 FLOAT encoding=Gorilla);
-
挂载元数据模板:
SET SCHEMA TEMPLATE t1 TO root.ln.wf01;
-
查看元数据模板:
SHOW SCHEMA TEMPLATES;
-
卸载/删除元数据模板:
UNSET SCHEMA TEMPLATE t1 FROM root.ln.wf01; DROP SCHEMA TEMPLATE t1;
2.5 节点管理
-
查看子路径:
SHOW CHILD PATHS root.BHSFC;
-
查看子节点:
SHOW CHILD NODES root;
-
统计节点数:
COUNT NODES root.BHSFC.Q1.* LEVEL=3;
三、时区设置
IoTDB中的数据点以时间戳保存,查询时以当前系统默认时区转换时间。时区设置不当可能导致查询结果不正确。
3.1 背景与问题
当查询特定时间点的数据时,若时区设置不匹配,可能导致查询结果为空。
3.2 解决方法
3.2.1 方法一:查询时指定时区
在查询时间后增加时区,如:
SELECT WROT_HubTmp FROM root.BHSFC.Q1.W002 WHERE time=2022-01-12T10:48:51.000-08:00;
3.2.2 方法二:设置系统时区与IoTDB时区一致
调整系统时区与IoTDB时区相同,如:
SET TIME_ZONE=-07:00;
四、结语
通过本文,您应该对Apache IoTDB的数据写入、删除、导出、元数据管理及时区设置有了全面的了解。希望这些信息能帮助您更好地使用IoTDB。