向 InfluxDB 3 Core 写入数据
InfluxDB 3 Core 专为高写入吞吐量而设计,并使用一种高效、人类可读的写入语法,称为行协议。InfluxDB 是一个“写入时模式”数据库,这意味着您可以开始写入数据,InfluxDB 会自动创建逻辑数据库、表及其模式,无需任何干预。一旦 InfluxDB 创建了模式,它会在接受新数据之前根据模式验证将来的写入请求。当您的模式发生变化时,还可以稍后添加新的标签和字段。
InfluxDB 3 Core 针对近期数据进行了优化
InfluxDB 3 Core 针对近期数据进行了优化,但可接受任何时间段的写入。该系统将数据持久化到 Parquet 文件中,以便使用 InfluxDB 3 Enterprise 或第三方工具进行历史分析。为了进行扩展的历史查询和优化的数据组织,请考虑使用 InfluxDB 3 Enterprise。
行协议
InfluxDB 3 Core 接受 行协议语法的数据。行协议包含以下元素
* 必需* 表 (table):一个字符串,用于标识存储数据的表。
标签集 (tag set):逗号分隔的键值对列表,每个键值对代表一个标签。标签键和值是未加引号的字符串。空格、逗号和等号字符必须进行转义。
* 字段集 (field set):逗号分隔的键值对列表,每个键值对代表一个字段。字段键是未加引号的字符串。空格和逗号必须进行转义。字段值可以是以下类型之一
时间戳 (timestamp):与数据关联的 Unix 时间戳。InfluxDB 支持纳秒精度。
有关模式设计建议,请参阅 InfluxDB 模式设计建议。
myTable, field1="v1",field2=1i
构建行协议
在基本了解行协议后,您现在可以构建行协议并将数据写入 InfluxDB 3 Core。考虑一个用例,您在家中收集传感器数据。每个传感器收集温度、湿度和一氧化碳读数。要收集此数据,请使用以下模式
- 表 (table):
home- 标签 (tags)
room:Living Room 或 Kitchen
- 字段 (fields)
temp:温度(摄氏度,浮点数)hum:湿度百分比(浮点数)co:一氧化碳(百万分之几,整数)
- 时间戳 (timestamp):以秒精度为单位的 Unix 时间戳
- 标签 (tags)
以下行协议样本代表从 开始每小时收集的数据。这些时间戳是动态的,可以通过单击右下角的 图标进行更新。
使用 CLI 写入数据
要快速开始写入数据,请使用 influxdb3 write 命令。包括以下内容
--database选项,用于标识目标数据库--token选项,用于指定要使用的令牌(除非已设置INFLUXDB3_AUTH_TOKEN环境变量)- 通过标准输入 (stdin) 传递引用的行协议数据
influxdb3 write \
--database DATABASE_NAME \
--token AUTH_TOKEN \
--precision s \
'home,room=Living\ Room temp=21.1,hum=35.9,co=0i 1641024000
home,room=Kitchen temp=21.0,hum=35.9,co=0i 1641024000
home,room=Living\ Room temp=21.4,hum=35.9,co=0i 1641027600
home,room=Kitchen temp=23.0,hum=36.2,co=0i 1641027600
home,room=Living\ Room temp=21.8,hum=36.0,co=0i 1641031200
home,room=Kitchen temp=22.7,hum=36.1,co=0i 1641031200
home,room=Living\ Room temp=22.2,hum=36.0,co=0i 1641034800
home,room=Kitchen temp=22.4,hum=36.0,co=0i 1641034800
home,room=Living\ Room temp=22.2,hum=35.9,co=0i 1641038400
home,room=Kitchen temp=22.5,hum=36.0,co=0i 1641038400
home,room=Living\ Room temp=22.4,hum=36.0,co=0i 1641042000
home,room=Kitchen temp=22.8,hum=36.5,co=1i 1641042000
home,room=Living\ Room temp=22.3,hum=36.1,co=0i 1641045600
home,room=Kitchen temp=22.8,hum=36.3,co=1i 1641045600
home,room=Living\ Room temp=22.3,hum=36.1,co=1i 1641049200
home,room=Kitchen temp=22.7,hum=36.2,co=3i 1641049200
home,room=Living\ Room temp=22.4,hum=36.0,co=4i 1641052800
home,room=Kitchen temp=22.4,hum=36.0,co=7i 1641052800
home,room=Living\ Room temp=22.6,hum=35.9,co=5i 1641056400
home,room=Kitchen temp=22.7,hum=36.0,co=9i 1641056400
home,room=Living\ Room temp=22.8,hum=36.2,co=9i 1641060000
home,room=Kitchen temp=23.3,hum=36.9,co=18i 1641060000
home,room=Living\ Room temp=22.5,hum=36.3,co=14i 1641063600
home,room=Kitchen temp=23.1,hum=36.6,co=22i 1641063600
home,room=Living\ Room temp=22.2,hum=36.4,co=17i 1641067200
home,room=Kitchen temp=22.7,hum=36.5,co=26i 1641067200'在代码示例中,将以下占位符替换为您自己的值
从文件写入数据
要写入已保存到文件的行协议,请传递 --file 选项——例如,将示例行协议保存到名为 sensor_data 的文件中,然后输入以下命令
influxdb3 write \
--database DATABASE_NAME \
--token AUTH_TOKEN \
--precision s \
--accept-partial \
--file path/to/sensor_data 将以下占位符替换为您自己的值
其他写入数据工具
有许多方法可以将数据写入 InfluxDB 3 Core 数据库,包括
- InfluxDB HTTP API:推荐用于批量和高吞吐量写入工作负载。
- InfluxDB 客户端库:客户端库可与您的代码集成,将数据构建为时间序列点,并将数据作为行协议写入您的 InfluxDB 3 Core 数据库。
- Telegraf:一个数据收集代理,拥有超过 300 个用于收集、处理和写入数据的插件。
有关更多信息,请参阅 写入数据到 InfluxDB 3 Core。
此页面是否有帮助?
感谢您的反馈!
支持和反馈
感谢您成为我们社区的一员!我们欢迎并鼓励您对 InfluxDB 3 Core 和本文档提供反馈和错误报告。要获得支持,请使用以下资源
具有年度合同或支持合同的客户可以 联系 InfluxData 支持。