文档文档

使用 influxctl CLI 写入 Line Protocol 数据

使用 influxctl CLI 将 Line Protocol 数据写入 InfluxDB Clustered。

构建 Line Protocol

基本了解 Line Protocol 的基础上,您现在可以构建 Line Protocol 并将数据写入 InfluxDB。考虑一个用例,您从家中的传感器收集数据。每个传感器收集温度、湿度和一氧化碳读数。要收集此数据,请使用以下模式

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

以下 Line Protocol 表示上述模式

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

在本教程中,您可以将此 Line Protocol 作为字符串直接传递给 influxctl write 命令,通过 stdin 传递,或者您可以将其保存到文件并从中读取。

将 Line Protocol 写入 InfluxDB

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

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

  • 使用 --token 标志的 数据库令牌(对目标数据库具有写入权限)

  • 使用 --precision 标志的时间戳精度,单位为秒 (s)

  • Line Protocol。通过以下方式之一传递 Line Protocol

    • 命令行上的字符串
    • 包含查询的文件路径
    • 单个破折号 (-) 以从 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:包含 Line Protocol 的文件的文件路径。可以是绝对文件路径或相对于当前工作目录的相对路径。
cat 
$LINE_PROTOCOL_FILEPATH
| influxctl write \
--database
DATABASE_NAME
\
--token
DATABASE_TOKEN
\
--precision s \ -

替换以下内容

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

此页是否对您有帮助?

感谢您的反馈!


Flux 的未来

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

阅读更多

InfluxDB 3 开源版本现已推出公开 Alpha 版

InfluxDB 3 开源版本现已可用于 Alpha 测试,根据 MIT 或 Apache 2 许可获得许可。

我们正在发布两个产品作为 Alpha 版的一部分。

InfluxDB 3 Core 是我们新的开源产品。它是一个用于时间序列和事件数据的最新数据引擎。InfluxDB 3 Enterprise 是一个商业版本,它建立在 Core 的基础上,增加了历史查询能力、读取副本、高可用性、可扩展性和细粒度的安全性。

有关如何开始使用的更多信息,请查看