使用Apache IoTDB进行IoT相关开发的架构设计与功能实现(8)

举报
小云悠悠zZ 发表于 2023/08/25 20:16:40 2023/08/25
【摘要】 IoTDB为用户提供了多种插入实时数据的方式,如直接输入插入SQL语句在客户端,这插入SQL语句语句可用于将数据插入到一个或多个已创建的指定时间序列中。

数据操作语言

插入实时数据

IoTDB provides users with a variety of ways to insert real-time data, such as directly inputting INSERT SQL statement in Client/Shell tools, or using Java JDBC to perform single or batch execution of INSERT SQL statement.

本节主要介绍插入SQL语句用于场景中的实时数据导入。

在本节的场景中,取两个时间序列root.ln.wf02.wt02.statusroot.ln.wf02.wt02.hardware例如,它们的数据类型分别是布尔型和文本型。

单列数据插入的示例代码如下:

  1. IoTDB > insert into root.ln.wf02.wt02(timestamp,status) values(1,true)
  2. IoTDB > insert into root.ln.wf02.wt02(timestamp,hardware) values(1, "v1")

上面的示例代码将长整数时间戳和值“true”插入到时间序列中root.ln.wf02.wt02.status并将长整数时间戳和值“v1”插入到时间序列中root.ln.wf02.wt02.hardware。当执行成功时,会显示成本时间以指示数据插入已经完成。

注意:在IoTDB中,文本类型数据可以用单引号和双引号表示。上面的插入语句对文本类型数据使用双引号。以下示例将对文本类型数据使用单引号。

INSERT语句还可以支持在同一时间点插入多列数据。在同一时间点“2”插入两个时间序列的值的示例代码如下:

  1. IoTDB > insert into root.ln.wf02.wt02(timestamp, status, hardware) VALUES (2, false, 'v2')

插入数据后,我们可以使用SELECT语句简单地查询插入的数据:

  1. IoTDB > select * from root.ln.wf02 where time < 3

结果如下所示。从查询结果可以看出,单列和多列数据的插入语句执行正确。

DML (Data Manipulation Language) - 图1

INSERT语句的错误处理

例如,如果用户将数据插入到不存在的时间序列中,请执行以下命令:

  1. IoTDB > insert into root.ln.wf02.wt02(timestamp, temperature) values(1,"v1")

因为root.ln.wf02.wt02. temperature不存在,系统将返回以下错误信息:

  1. Msg: The resultDataType or encoding or compression of the last node temperature is conflicting in the storage group root.ln

例如,如果用户插入的数据类型与时间序列的相应数据类型不一致,则执行以下命令:

  1. IoTDB > insert into root.ln.wf02.wt02(timestamp,hardware) values(1,100)

系统将返回以下错误信息:

  1. error: The TEXT data type should be covered by " or '

挑选

时间片查询

本章主要介绍使用IoTDB SELECT语句进行时间片查询的相关例子。详细的SQL语法和用法规范可以在SQL文档

根据时间间隔选择一列数据

SQL语句是:

  1. select temperature from root.ln.wf01.wt01 where time < 2017-11-01T00:08:00.000

这意味着:

所选设备为ln集团wf01厂wt01设备;选定的时间序列是温度传感器(温度)。SQL语句要求选择“2017-11-01T00:08:00.000”时间点之前的所有温度传感器值。

该SQL语句的执行结果如下:

DML (Data Manipulation Language) - 图2

根据时间间隔选择多列数据

SQL语句是:

  1. select status, temperature from root.ln.wf01.wt01 where time > 2017-11-01T00:05:00.000 and time < 2017-11-01T00:12:00.000;

这意味着:

所选设备为ln集团wf01厂wt01设备;选定的时间系列是“状态”和“温度”。SQL语句要求选择“2017-11-01T00:05:00.000”和“2017-11-01T00:12:00.000”时间点之间的状态和温度传感器值。

该SQL语句的执行结果如下:

DML (Data Manipulation Language) - 图3

根据多个时间间隔为同一设备选择多列数据

IoTDB支持在一个查询中指定多个时间间隔条件。用户可以根据需要任意组合时间间隔条件。例如,SQL语句是:

  1. select status,temperature from root.ln.wf01.wt01 where (time > 2017-11-01T00:05:00.000 and time < 2017-11-01T00:12:00.000) or (time >= 2017-11-01T16:35:00.000 and time <= 2017-11-01T16:37:00.000);

这意味着:

所选设备为ln集团wf01厂wt01设备;选择的时间序列是“状态”和“温度”;该语句指定了两个不同的时间间隔,即“2017-11-01T00:05:00.000至2017-11-01T00:12:00.000”和“2017-11-01T16:35:00.000至2017-11-01T16:37:00.000”。SQL语句要求选择满足任何时间间隔的选定时间序列的值。

该SQL语句的执行结果如下:

DML (Data Manipulation Language) - 图4

根据多个时间间隔为不同的设备选择多列数据

系统支持在查询中选择任何列中的数据,即所选择的列可以来自不同的设备。例如,SQL语句是:

  1. select wf01.wt01.status,wf02.wt02.hardware from root.ln where (time > 2017-11-01T00:05:00.000 and time < 2017-11-01T00:12:00.000) or (time >= 2017-11-01T16:35:00.000 and time <= 2017-11-01T16:37:00.000);

这意味着:

选择的时间序列为“ln集团wf01厂wt01装置的电源状态”和“ln集团wf02厂wt02装置的硬件版本”;该语句指定了两个不同的时间间隔,即“2017-11-01T00:05:00.000至2017-11-01T00:12:00.000”和“2017-11-01T16:35:00.000至2017-11-01T16:37:00.000”。SQL语句要求选择满足任何时间间隔的选定时间序列的值。

该SQL语句的执行结果如下:

DML (Data Manipulation Language) - 图5

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。