---
title: Use Telegraf to write CSV data
description: Use the Telegraf file input plugin to read and parse CSV data into line protocol and write it to InfluxDB 3 Core.
url: https://docs.influxdata.com/influxdb3/core/write-data/use-telegraf/csv/
estimated_tokens: 1079
product: InfluxDB 3 Core
version: core
publisher: InfluxData
canonical: https://docs.influxdata.com/influxdb3/core/write-data/use-telegraf/csv/
date: '2025-01-30T12:37:12-07:00'
lastmod: '2025-01-30T12:37:12-07:00'
---

Use the Telegraf `file` input plugin to read and parse CSV data into[line protocol](/influxdb3/core/reference/syntax/line-protocol/)and write it to InfluxDB 3 Core.[Telegraf](/telegraf/v1/) is a plugin-based agent that collects
metrics from different sources and writes them to specified destinations.

* [Configure Telegraf to read CSV files](#configure-telegraf-to-read-csv-files)
* [Configure Telegraf to write to InfluxDB](#configure-telegraf-to-write-to-influxdb)
  * [Other Telegraf configuration options](#other-telegraf-configuration-options)

## Configure Telegraf to read CSV files

1. Add and enable the [`inputs.file` plugin](/telegraf/v1/plugins/#input-file)in your Telegraf configuration file.
2. Use the `files` option to specify the list of CSV files to read.
   CSV files must be accessible by the Telegraf agent.
3. Set the `data_format` option to `csv`.
4. Define all other `csv_` configuration options specific to the CSV data you
   want to write to InfluxDB 3 Core.*For detailed information about each of the CSV format configuration options,
   see [CSV input data format](/telegraf/v1/data_formats/input/csv/).*

```toml
[[inputs.file]]
  files = ["/path/to/example.csv"]
  data_format = "csv"
  csv_header_row_count = 0
  csv_column_names = []
  csv_column_types = []
  csv_skip_rows = 0
  csv_metadata_rows = 0
  csv_metadata_separators = [":", "="]
  csv_metadata_trim_set = ""
  csv_skip_columns = 0
  csv_delimiter = ","
  csv_comment = ""
  csv_trim_space = false
  csv_tag_columns = []
  csv_measurement_column = ""
  csv_timestamp_column = ""
  csv_timestamp_format = ""
  csv_timezone = ""
  csv_skip_values = []
  csv_skip_errors = false
  csv_reset_mode = "none"
```

## Configure Telegraf to write to InfluxDB

To send data to InfluxDB 3 Core, enable and configure the[`influxdb_v2` output plugin](/influxdb3/core/write-data/use-telegraf/configure/#enable-and-configure-the-influxdb-v2-output-plugin)in your `telegraf.conf`.

```toml
[[inputs.file]]
  files = ["/path/to/example.csv"]
  data_format = "csv"
  csv_header_row_count = 0
  csv_column_names = []
  csv_column_types = []
  csv_skip_rows = 0
  csv_metadata_rows = 0
  csv_metadata_separators = [":", "="]
  csv_metadata_trim_set = ""
  csv_skip_columns = 0
  csv_delimiter = ","
  csv_comment = ""
  csv_trim_space = false
  csv_tag_columns = []
  csv_measurement_column = ""
  csv_timestamp_column = ""
  csv_timestamp_format = ""
  csv_timezone = ""
  csv_skip_values = []
  csv_skip_errors = false
  csv_reset_mode = "none"

[[outputs.influxdb_v2]]
  urls = ["http://localhost:8181"]
  token = "AUTH_TOKEN"
  organization = ""
  bucket = "DATABASE_NAME"
  content_encoding = "gzip"
```

Replace the following:

* `DATABASE_NAME`:
  the name of the database to write data to

* `AUTH_TOKEN`:
  your InfluxDB 3 Core [token](/influxdb3/core/admin/tokens/).*Store this in a secret store or environment variable to avoid exposing the raw token string.*

  > [!Tip]
> ##### Store your authorization token as an environment variable #####
> Avoid storing a plain text token in your Telegraf configuration file.
> Store the token as an environment variable and then
> reference the environment variable in your configuration file using string
> interpolation. For example:
> ```
> [[outputs.influxdb_v2]]
> urls = ["http://localhost:8181"]
> token = "${INFLUX_TOKEN}"
> # ...
> ```

  Avoid storing a plain text token in your Telegraf configuration file.
  Store the token as an environment variable and then
  reference the environment variable in your configuration file using string
  interpolation. For example:

  ```
  [[outputs.influxdb_v2]]
    urls = ["http://localhost:8181"]
    token = "${INFLUX_TOKEN}"
    # ...
  ```

**Restart the Telegraf agent** to apply the configuration change and write the
CSV data to InfluxDB 3 Core.

#### Other Telegraf configuration options

The preceding examples describe Telegraf configurations necessary for writing to
InfluxDB 3 Core. The `influxdb_v2` output plugin provides several other
configuration options. For more information, see the[`influxdb_v2` plugin options](/telegraf/v1/output-plugins/influxdb_v2/)on GitHub.

#### Related

* [CSV input data format](/telegraf/v1/data_formats/input/csv/)
* [Use Telegraf to write data](/influxdb3/core/write-data/use-telegraf/)
