本文介紹通過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
'