本文介绍通过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。
|
Timestamp | 时间戳。Timestamp目前协议上支持ns,数据存储时转换为ms存储。如果您需要修改时间戳精度,可通过precision来设置。 |
请求路径
请求路径:/api/v2/write
请求方法:POST
发送行协议写入请求时,需要将数据按行协议写入格式编写后作为POST请求的请求体填入,参数说明如下:
参数 | 是否必选 | 说明 |
precision | 否 | 时间戳精度。默认值为ns,支持的取值为ns、us、ms、s、m、h。 |
db | 否 | 数据写入的数据库名。 |
schema_policy | 否 | Schema约束策略。默认值为WEAK,WEAK模式下会自动创建时序表。支持的取值为:
详情请参见支持的Schema约束策略。 |
用户认证信息指定
当Lindorm时序引擎开启用户鉴权时,通过/api/v2/write
发送SQL请求时需要向HTTP请求头中填入用户认证信息。目前/api/v2/write
遵循的是BASIC AUTH
认证方式,编码后的认证信息需要指定在HTTP请求头的Authorization
字段中。
基本认证凭据的格式如下:
BASIC {BASE64编码的认证信息}
其中BASE64编码的认证信息为${用户名}:${对应的用户密码}
,以半角冒号(:)分隔。
各编程语言编码并填充BASIC AUTH认证信息的方法,请查询所用语言的相关类库的使用文档,不在此罗列。
对于初始用户名root和初始密码root,BASE64编码后HTTP请求头的Authorization
字段应包含的信息如下所示:
Authorization: Basic cm9vdDpyb290
行协议写入格式
行协议写入格式和参数说明如下:
<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
分隔。通过行协议将数据写入Lindorm时序引擎时,时序引擎的Schema约束默认为弱约束,您也可以通过schema_policy参数修改Schema约束策略。
示例
行协议写入的语句示例如下。
curl -X POST \
'http://ld-bp1489gr5t*****-proxy-tsdb.lindorm.rds.aliyuncs.com:8242/api/v2/write?precision=ms&db=default' \
-d '
sensor7,device_id=F07A1260,region=north-cn temperature=12.1,humidity=45 1619076780000
sensor7,device_id=F07A1260,region=north-cn temperature=13.2,humidity=47 1619076790000
sensor7,device_id=F07A1260,region=north-cn temperature=10.6,humidity=46 1619076800000
sensor7,device_id=F07A1260,region=north-cn temperature=18.1,humidity=44 1619076780000
sensor7,device_id=F07A1260,region=north-cn temperature=19.7,humidity=44 1619076790000
'