Documentation

Use the influxctl CLI to write line protocol data

Use the influxctl CLI to write line protocol data to InfluxDB Clustered.

Construct line protocol

With a basic understanding of line protocol, you can construct data in line protocol format and write it to InfluxDB. Consider a use case where you collect data from sensors in your home. Each sensor collects temperature, humidity, and carbon monoxide readings. To collect this data, use the following schema:

  • measurement: home
    • tags
      • room: Living Room or Kitchen
    • fields
      • temp: temperature in °C (float)
      • hum: percent humidity (float)
      • co: carbon monoxide in parts per million (integer)
    • timestamp: Unix timestamp in second precision

The following line protocol represents the schema described above:

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
  • Copy
  • Fill window

For this tutorial, you can either pass this line protocol directly to the influxctl write command as a string, via stdin, or you can save it to and read it from a file.

Write the line protocol to InfluxDB

Use the influxctl write command to write the home sensor sample data to your InfluxDB cluster. Provide the following:

  • The database name using the --database flag

  • A database token (with write permissions on the target database) using the --token flag

  • The timestamp precision as seconds (s) using the --precision flag

  • Line protocol. Pass the line protocol in one of the following ways:

    • a string on the command line
    • a path to a file that contains the query
    • a single dash (-) to read the query from stdin
influxctl write \
  --database 
DATABASE_NAME
\
--token
DATABASE_TOKEN
\
--precision s \ 'home,room=Living\ Room temp=21.1,hum=35.9,co=0i 1745740800 home,room=Kitchen temp=21.0,hum=35.9,co=0i 1745740800 home,room=Living\ Room temp=21.4,hum=35.9,co=0i 1745744400 home,room=Kitchen temp=23.0,hum=36.2,co=0i 1745744400 home,room=Living\ Room temp=21.8,hum=36.0,co=0i 1745748000 home,room=Kitchen temp=22.7,hum=36.1,co=0i 1745748000 home,room=Living\ Room temp=22.2,hum=36.0,co=0i 1745751600 home,room=Kitchen temp=22.4,hum=36.0,co=0i 1745751600 home,room=Living\ Room temp=22.2,hum=35.9,co=0i 1745755200 home,room=Kitchen temp=22.5,hum=36.0,co=0i 1745755200 home,room=Living\ Room temp=22.4,hum=36.0,co=0i 1745758800 home,room=Kitchen temp=22.8,hum=36.5,co=1i 1745758800'
  • Copy
  • Fill window

Replace the following:

  • DATABASE_NAME: Name of the database to write to.
  • DATABASE_TOKEN: Database token with write permissions on the target database.
  1. In your terminal, enter the following command to create the sample data file:

    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
    • Copy
    • Fill window
  1. Enter the following CLI command to write the data from the sample file:

    influxctl write \
      --database 
    DATABASE_NAME
    \
    --token
    DATABASE_TOKEN
    \
    --precision s \ $
    LINE_PROTOCOL_FILEPATH
    • Copy
    • Fill window

Replace the following:

  • DATABASE_NAME: Name of the database to write to.
  • DATABASE_TOKEN: Database token with write permissions on the target database.
  • $LINE_PROTOCOL_FILEPATH: File path to the file containing the line protocol. Can be an absolute file path or relative to the current working directory.
cat 
$LINE_PROTOCOL_FILEPATH
| influxctl write \
--database
DATABASE_NAME
\
--token
DATABASE_TOKEN
\
--precision s \ -
  • Copy
  • Fill window

Replace the following:

  • DATABASE_NAME: Name of the database to write to.
  • DATABASE_TOKEN: Database token with write permissions on the target database.
  • $LINE_PROTOCOL_FILEPATH: File path to the file containing the line protocol. Can be an absolute file path or relative to the current working directory.

Was this page helpful?

Thank you for your feedback!


The future of Flux

Flux is going into maintenance mode. You can continue using it as you currently are without any changes to your code.

Read more

Now Generally Available

InfluxDB 3 Core and Enterprise

Start fast. Scale faster.

Get the Updates

InfluxDB 3 Core is an open source, high-speed, recent-data engine that collects and processes data in real-time and persists it to local disk or object storage. InfluxDB 3 Enterprise builds on Core’s foundation, adding high availability, read replicas, enhanced security, and data compaction for faster queries and optimized storage. A free tier of InfluxDB 3 Enterprise is available for non-commercial at-home or hobbyist use.

For more information, check out: