---
title: Write to SQL databases
description: Use sql.to() to write data to SQL databases with Flux.
url: https://docs.influxdata.com/flux/v0/write-data/sql/
estimated_tokens: 1067
product: Flux
version: v0
publisher: InfluxData
canonical: https://docs.influxdata.com/flux/v0/write-data/sql/
date: '2023-11-06T15:53:12-07:00'
lastmod: '2023-11-06T15:53:12-07:00'
---

Use [`sql.to()`](/flux/v0/stdlib/sql/to/) to write data to SQL databases with Flux.

* [Databases](#databases)
* [Drivers](#drivers)
* [Data source names](#data-source-names)
  * [Store sensitive credentials as secrets](#store-sensitive-credentials-as-secrets)

* [Data structure](#data-structure)
  * [Column data types](#column-data-types)

* [Example](#example)

## Databases

`sql.to()` supports the following SQL databases:

* [Amazon RDS](/flux/v0/write-data/sql/amazon-rds/)
* [CockroachDB](/flux/v0/write-data/sql/cockroachdb/)
* [BigQuery](/flux/v0/write-data/sql/bigquery/)
* [MariaDB](/flux/v0/write-data/sql/mariadb/)
* [MySQL](/flux/v0/write-data/sql/mysql/)
* [Percona](/flux/v0/write-data/sql/percona/)
* [PostgreSQL](/flux/v0/write-data/sql/postgresql/)
* [SAP HANA](/flux/v0/write-data/sql/sap-hana/)
* [Snowflake](/flux/v0/write-data/sql/snowflake/)
* [SQL Server](/flux/v0/write-data/sql/sql-server/)
* [SQLite](/flux/v0/write-data/sql/sqlite/)
* [Vertica](/flux/v0/write-data/sql/vertica/)

## Drivers

`sql.to()` uses [Go SQL drivers](https://github.com/golang/go/wiki/SQLDrivers)in the [Go sql package](https://pkg.go.dev/database/sql) to connect to SQL databases.
The following drivers are available:

* `bigquery`
* `hdb`
* `mysql`
* `postgres`
* `snowflake`
* `sqlite3`
* `sqlserver`

## Data source names

Each [SQL driver](#drivers) supports unique data source name (DSN) syntaxes
(also known as **connection strings**).*See the [database guides](#databases) for information about DSNs for each driver.*

#### Store sensitive credentials as secrets

If using **InfluxDB Cloud** or **InfluxDB OSS 2.x**, we recommend storing DSN
credentials as [InfluxDB secrets](/influxdb/cloud/admin/secrets/).
Use [`secrets.get()`](/flux/v0/stdlib/influxdata/influxdb/secrets/get/) to
retrieve a secret from the InfluxDB secrets API.

```js
import "sql"
import "influxdata/influxdb/secrets"

username = secrets.get(key: "POSTGRES_USER")
password = secrets.get(key: "POSTGRES_PASS")

sql.to(
    driverName: "postgres",
    dataSourceName: "postgresql://${username}:${password}@localhost:5432",
    table: "example_table",
)
```

## Data Structure

`sql.to()` ungroups all rows into a single table and writes all existing columns
as the specified destination table.
If the destination table doesn’t exist, `sql.to()` attempts to create it.

#### Column data types

Each `sql.to()` [driver](#drivers) converts [Flux basic data types](/flux/v0/data-types/basic/)to corresponding data types supported by the target database.*See the [database guides](#databases) for information about data type conversions.*

## Example

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

##### data

|       \_time       |tag|\_value|
|--------------------|---|-------|
|2021-01-01T00:00:00Z|t1 |  \-2  |
|2021-01-01T00:00:10Z|t1 |  10   |
|2021-01-01T00:00:20Z|t1 |   7   |

|       \_time       |tag|\_value|
|--------------------|---|-------|
|2021-01-01T00:00:00Z|t2 |  19   |
|2021-01-01T00:00:10Z|t2 |   4   |
|2021-01-01T00:00:20Z|t2 |  \-3  |

##### Flux script

```js
import "sql"

data
    |> sql.to(
        driverName: "mysql",
        dataSourceName: "username:passwOrd@tcp(localhost:3306)/db",
        table: "exampleTable"
    )
```

##### SQL output

|      \_time       |tag|\_value|
|-------------------|---|-------|
|2021-01-01 00:00:00|t1 |  \-2  |
|2021-01-01 00:00:10|t1 |  10   |
|2021-01-01 00:00:20|t1 |   7   |
|2021-01-01 00:00:00|t2 |  19   |
|2021-01-01 00:00:10|t2 |   4   |
|2021-01-01 00:00:20|t2 |  \-3  |

#### Related

* [sql.to() function](/flux/v0/stdlib/sql/to/)
| _time | tag | _value |
| --- | --- | --- |
| _time | tag | _value |
| 2021-01-01T00:00:00Z | t1 | -2 |
| 2021-01-01T00:00:10Z | t1 | 10 |
| 2021-01-01T00:00:20Z | t1 | 7 |

| _time | tag | _value |
| --- | --- | --- |
| _time | tag | _value |
| 2021-01-01T00:00:00Z | t2 | 19 |
| 2021-01-01T00:00:10Z | t2 | 4 |
| 2021-01-01T00:00:20Z | t2 | -3 |

| _time | tag | _value |
| --- | --- | --- |
| _time | tag | _value |
| 2021-01-01 00:00:00 | t1 | -2 |
| 2021-01-01 00:00:10 | t1 | 10 |
| 2021-01-01 00:00:20 | t1 | 7 |
| 2021-01-01 00:00:00 | t2 | 19 |
| 2021-01-01 00:00:10 | t2 | 4 |
| 2021-01-01 00:00:20 | t2 | -3 |
