行协议写入

本文介绍通过InfluxDB®行协议将数据写入Lindorm时序引擎的方法和示例。

背景信息

Lindorm时序引擎兼容InfluxDB®的行协议(Line Protocol)格式。对于通过行协议发送数据的应用或设备,都可以将数据写入Lindorm时序引擎中。

支持的数据类型

行协议写入语法的数据类型包括Float、Integer、String、Boolean和Timestamp。数据类型说明参见下表。

数据类型

说明

Float

默认解析类型,例如:1、1.0、1.e+10、1.E+10

Integer

支持64位整数,通过后缀i来识别,例如:12i、101i。

String

字符串类型,使用双引号(“”)表示,例如:“hello world”。

Boolean

取值包括True和False。

  • True支持的语法包括t、T、true、True、TRUE。

  • False支持的语法包括f、F、false、False、FALSE。

Timestamp

时间戳。Timestamp目前协议上支持ns,数据存储时转换为ms存储。如果您需要修改时间戳精度,可通过precision来设置。

请求路径

  • 请求路径:/api/v2/write

  • 请求方法:POST

发送行协议写入请求时,需要将数据按行协议写入格式编写后作为POST请求的请求体填入,参数说明如下:

参数

是否必选

说明

precision

默认值ns,时间戳精度,取值包括ns、us、ms、s、m、h。

db

数据写入的数据库名。

schema_policy

默认为WEAK,WEAK模式下会自动创建时序表,取值为:

  • WEAK:弱约束策略。

  • STRONG:强约束策略。

有关Schema约束策略请参见支持的Schema约束策略

行协议写入格式

行协议写入格式和参数说明如下:

<table_name>[,<tag_key>=<tag_value>[,<tag_key>=<tag_value>]] <field_key>=<field_value>[,<field_key>=<field_value>] [<timestamp>] 

参数

是否必选

说明

table_name

数据写入的表名。

tag_set

数据标签,可用于搜索。

field_set

数据字段。

timestamp

时间戳,默认为当前时间,默认单位为ns。

说明

如果您需要修改时间戳精度,可通过precision来设置。

说明

  • 一次写入多条数据使用反斜线n(\n)分隔。

  • 通过行协议将数据写入Lindorm时序引擎时,时序引擎的Schema约束行为属于弱约束

示例

行协议写入的语句示例如下。

POST /api/v2/write?precision=ms&db=default
sensor,device_id=F07A1260,region=north-cn temperature=12.1,humidity=45 1619076780000
sensor,device_id=F07A1260,region=north-cn temperature=13.2,humidity=47 1619076790000
sensor,device_id=F07A1260,region=north-cn temperature=10.6,humidity=46 1619076800000
sensor,device_id=F07A1260,region=north-cn temperature=18.1,humidity=44 1619076780000
sensor,device_id=F07A1260,region=north-cn temperature=19.7,humidity=44 1619076790000

行协议写入成功后返回状态码204。

阿里云首页 云原生多模数据库Lindorm 相关技术圈