数据接入

历史数据导入

0.8.2版本中暂不支持此功能。

实时数据接入

IoTDB为用户提供多种插入实时数据的方式,例如在Cli/Shell工具中直接输入插入数据的INSERT语句,或使用Java API(标准Java JDBC接口)单条或批量执行插入数据的INSERT语句

本节主要为您介绍实时数据接入的INSERT语句在场景中的实际使用示例,有关INSERT SQL语句的详细语法请参见本文INSERT语句节。

使用INSERT语句

使用INSERT语句可以向指定的已经创建的一条或多条时间序列中插入数据。对于每一条数据,均由一个时间戳类型的时间戳和一个数值类型的传感器采集值组成。

在本节的场景实例下,以其中的两个时间序列root.ln.wf02.wt02.statusroot.ln.wf02.wt02.hardware为例 ,它们的数据类型分别为BOOLEAN和TEXT。

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

  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")

以上示例代码将长整型的timestamp以及值为true的数据插入到时间序列root.ln.wf02.wt02.status中和将长整型的timestamp以及值为”v1”的数据插入到时间序列root.ln.wf02.wt02.hardware中。执行成功后会返回执行时间,代表数据插入已完成。

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

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

结果如图所示。由查询结果可以看出,单列、多列数据的插入操作正确执行。

数据接入 - 图1

INSERT语句的错误处理

若用户向一个不存在的时间序列中插入数据,例如执行以下命令:

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

由于root.ln.wf02.wt02. temperature时间序列不存在,系统将会返回以下ERROR告知该Timeseries路径不存在:

  1. Msg: Current deviceId[root.ln.wf02.wt02] does not contains measurement:temperature

若用户插入的数据类型与该Timeseries对应的数据类型不一致,例如执行以下命令:

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

系统将会返回以下ERROR告知数据类型有误:

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