---
title: Write to InfluxDB
description: Use to() or experimental.to() to write data to InfluxDB using Flux.
url: https://docs.influxdata.com/flux/v0/write-data/influxdb/
estimated_tokens: 3787
product: Flux
version: v0
---

# Write to InfluxDB

To write data to InfluxDB using Flux, use [`to()`](/flux/v0/stdlib/influxdata/influxdb/to/) or [`experimental.to()`](/flux/v0/stdlib/experimental/to/). Provide the following parameters to both functions:

-   **bucket** or **bucketID**: *InfluxDB bucket name* or *bucket ID* to write to.
-   **org** or **orgID**: *InfluxDB organization name* or *organization ID* to write to.
-   **host**: [InfluxDB URL](/influxdb/v2/reference/urls/) or [InfluxDB Cloud region](/influxdb/cloud/reference/regions) URL.
-   **token**: [InfluxDB API token](/influxdb/v2/admin/tokens/).

##### Write options

-   [Write data to InfluxDB](#write-data-to-influxdb)
-   [Write pivoted data to InfluxDB](#write-pivoted-data-to-influxdb)

## Write data to InfluxDB

Use [`to()`](/flux/v0/stdlib/influxdata/influxdb/to/) to write data structured using the standard [InfluxDB v2.x and InfluxDB Cloud data structure](/influxdb/v2/reference/key-concepts/data-elements/). Data must include, at a minimum, the following columns:

-   `_time`
-   `_measurement`
-   `_field`
-   `_value`

*All other columns are written to InfluxDB as [tags](/influxdb/v2/reference/key-concepts/data-elements/#tags).*

Given the following input [stream of tables](/flux/v0/get-started/data-model/#stream-of-tables):

| _time | _measurement | id | loc | _field | _value |
| --- | --- | --- | --- | --- | --- |
| 2021-01-01T00:00:00Z | m | 001 | SF | temp | 72.1 |
| 2021-01-01T01:00:00Z | m | 001 | SF | temp | 71.8 |
| 2021-01-01T02:00:00Z | m | 001 | SF | temp | 71.2 |

| _time | _measurement | id | loc | _field | _value |
| --- | --- | --- | --- | --- | --- |
| 2021-01-01T00:00:00Z | m | 001 | SF | hum | 40.5 |
| 2021-01-01T01:00:00Z | m | 001 | SF | hum | 50.1 |
| 2021-01-01T02:00:00Z | m | 001 | SF | hum | 52.8 |

`to()` generates the following [line protocol](/influxdb/v2/reference/syntax/line-protocol/) and writes it to InfluxDB:

```
m,id=001,loc=SF temp=72.1,hum=40.5 1609459200000000000
m,id=001,loc=SF temp=71.8,hum=50.1 1609462800000000000
m,id=001,loc=SF temp=71.2,hum=52.8 1609466400000000000
```

### Example: Write data to a bucket

<!-- Tabbed content: Select one of the following options -->

**In the same org:**

```js
data
    |> to(bucket: "example-bucket")
```

**In a different org:**

```js
data
    |> to(bucket: "example-bucket", org: "example-org", token: "mY5uPeRs3Cre7tok3N")
```

**On a remote host:**

```js
data
    |> to(
        bucket: "example-bucket",
        org: "example-org",
        token: "mY5uPeRs3Cre7tok3N",
        host: "https://myinfluxdbdomain.com/8086",
    )
```

<!-- End tabbed content -->

## Write pivoted data to InfluxDB

Use [`experimental.to()`](/flux/v0/stdlib/experimental/to/) to write [pivoted](/flux/v0/stdlib/universe/pivot/) data to InfluxDB. Input data must have the following columns:

-   `_time`
-   `_measurement`

All columns **in the [group key](/flux/v0/get-started/data-model/#group-key)** other than `_time` and `_measurement` are written to InfluxDB as [tags](/influxdb/v2/reference/key-concepts/data-elements/#tags). Columns **not in the group key** are written to InfluxDB as [fields](/influxdb/v2/reference/key-concepts/data-elements/#fields).

`_start` and `_stop` columns are ignored.

**To write pivoted data to InfluxDB:**

1. Import the `experimental` package.
2. Use `experimental.to()` to write pivoted data to an InfluxDB bucket.

```js
import "experimental"

data
    |> experimental.to(bucket: "example-bucket")
```

Given the following input [stream of tables](/flux/v0/get-started/data-model/#stream-of-tables):

Group key = \[\_measurement, id, loc\]

| _time | _measurement | id | loc | min | max | mean |
| --- | --- | --- | --- | --- | --- | --- |
| 2021-01-01T00:00:00Z | m | 001 | FR | 2 | 6 | 4.0 |
| 2021-01-01T01:00:00Z | m | 001 | FR | 2 | 18 | 10.0 |
| 2021-01-01T02:00:00Z | m | 001 | FR | 1 | 13 | 7.0 |

| _time | _measurement | id | loc | min | max | mean |
| --- | --- | --- | --- | --- | --- | --- |
| 2021-01-01T00:00:00Z | m | 001 | BK | 4 | 4 | 4.0 |
| 2021-01-01T01:00:00Z | m | 001 | BK | 3 | 5 | 4.0 |
| 2021-01-01T02:00:00Z | m | 001 | BK | 5 | 8 | 6.5 |

`experimental.to()` generates the following [line protocol](/influxdb/v2/reference/syntax/line-protocol/) and writes it to InfluxDB:

```
m,id=001,loc=FR min=2i,max=6i,mean=4 1609459200000000000
m,id=001,loc=FR min=2i,max=18i,mean=10 1609462800000000000
m,id=001,loc=FR min=1i,max=13i,mean=7 1609466400000000000
m,id=001,loc=BK min=4i,max=4i,mean=4 1609459200000000000
m,id=001,loc=BK min=3i,max=5i,mean=4 1609462800000000000
m,id=001,loc=BK min=5i,max=3i,mean=6.5 1609466400000000000
```

### Example: Write pivoted data to InfluxDB

<!-- Tabbed content: Select one of the following options -->

**In the same org:**

```js
import "experimental"

data
    |> experimental.to(bucket: "example-bucket")
```

**In a different org:**

```js
import "experimental"

data
    |> experimental.to(bucket: "example-bucket", org: "example-org", token: "mY5uPeRs3Cre7tok3N")
```

**On a remote host:**

```js
import "experimental"

data
    |> experimental.to(
        bucket: "example-bucket",
        org: "example-org",
        token: "mY5uPeRs3Cre7tok3N",
        host: "https://myinfluxdbdomain.com/8086",
    )
```

<!-- End tabbed content -->

#### Related

-   [to() function](/flux/v0/stdlib/influxdata/influxdb/to/)
-   [experimental.to() function](/flux/v0/stdlib/experimental/to/)
