文档说明

使用 influxctl 命令行工具写入行协议数据

使用 influxctl 命令行工具 将行协议数据写入 InfluxDB 集群。

构建行协议

在了解行协议基本原理的基础上,您可以构建行协议并将数据写入 InfluxDB。假设您需要从家中的传感器收集数据。每个传感器收集温度、湿度和一氧化碳读数。要收集这些数据,请使用以下模式

  • 度量: home
    • 标签
      • room: 客厅或厨房
    • 字段
      • temp: 温度(浮点数,单位:°C)
      • hum: 湿度百分比(浮点数)
      • co: 一氧化碳(单位:百万分之几,整数)
    • 时间戳:以秒为精度的 Unix 时间戳

以下行协议表示上述模式

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

对于本教程,您可以直接将此行协议作为字符串传递给 influxctl write 命令,通过 stdin,或者您可以将它保存到文件中并从中读取。

将行协议写入 InfluxDB

使用 influxctl write 命令家庭传感器示例数据 写入您的 InfluxDB 集群。提供以下信息

  • 使用 --database 标志指定 数据库名称

  • 使用 --token 标志指定 数据库令牌(在目标数据库上有写权限)

  • 使用 --precision 标志指定时间戳精度为秒(s

  • 行协议。以下方式之一传递行协议

    • 命令行上的字符串
    • 包含查询的文件的路径
    • 单个短横线(-)从 stdin 读取查询
influxctl write \
  --database 
DATABASE_NAME
\
--token
DATABASE_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'

替换以下内容

  • DATABASE_NAME:要写入的数据库的名称。
  • DATABASE_TOKEN:具有目标数据库写权限的数据库令牌。
  1. 在您的终端中,输入以下命令创建示例数据文件

    cat <<EOF > ./home.lp && 
    LINE_PROTOCOL_FILEPATH
    =./home.lp
    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 EOF
  1. 输入以下 CLI 命令从示例文件写入数据

    influxctl write \
      --database 
    DATABASE_NAME
    \
    --token
    DATABASE_TOKEN
    \
    --precision s \ $
    LINE_PROTOCOL_FILEPATH

替换以下内容

  • DATABASE_NAME:要写入的数据库的名称。
  • DATABASE_TOKEN:具有目标数据库写权限的数据库令牌。
  • $LINE_PROTOCOL_FILEPATH:包含行协议的文件的文件路径。可以是绝对路径,也可以是相对于当前工作目录的相对路径。
cat 
$LINE_PROTOCOL_FILEPATH
| influxctl write \
--database
DATABASE_NAME
\
--token
DATABASE_TOKEN
\
--precision s \ -

替换以下内容

  • DATABASE_NAME:要写入的数据库的名称。
  • DATABASE_TOKEN:具有目标数据库写权限的数据库令牌。
  • $LINE_PROTOCOL_FILEPATH:包含行协议的文件的文件路径。可以是绝对路径,也可以是相对于当前工作目录的相对路径。

这个页面有用吗?

感谢您的反馈!


Flux 的未来

Flux 正在进入维护模式。您可以继续像现在一样使用它,而无需对您的代码进行任何更改。

阅读更多

InfluxDB v3 增强功能和 InfluxDB Clustered 现已正式发布

新功能,包括更快的查询性能和管理工具,推动了 InfluxDB v3 产品线的进步。InfluxDB Clustered 现已正式发布。

InfluxDB v3 性能和功能

InfluxDB v3 产品线在查询性能方面取得了显著提升,并提供了新的管理工具。这些增强包括用于监控您的 InfluxDB 集群健康状况的操作仪表板,InfluxDB Cloud Dedicated 中的单点登录(SSO)支持,以及针对令牌和数据库的新管理 API。

了解新的 v3 增强


InfluxDB Clustered 正式发布

InfluxDB 集群版现已正式发布,为您的自托管堆栈提供 InfluxDB v3 的强大功能。

与我们讨论 InfluxDB 集群版