Documentation

Write to SQL databases

Use sql.to() to write data to SQL databases with Flux.

Databases

sql.to() supports the following SQL databases:

Drivers

sql.to() uses Go SQL drivers in the Go sql package to connect to SQL databases. The following drivers are available:

  • bigquery
  • hdb
  • mysql
  • postgres
  • snowflake
  • sqlite3
  • sqlserver

Data source names

Each SQL driver supports unique data source name (DSN) syntaxes (also known as connection strings). See the database guides 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. Use secrets.get() to retrieve a secret from the InfluxDB secrets API.

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 converts Flux basic data types to corresponding data types supported by the target database. See the database guides for information about data type conversions.

Example

Given the following following stream of tables:

data
_timetag_value
2021-01-01T00:00:00Zt1-2
2021-01-01T00:00:10Zt110
2021-01-01T00:00:20Zt17
_timetag_value
2021-01-01T00:00:00Zt219
2021-01-01T00:00:10Zt24
2021-01-01T00:00:20Zt2-3
Flux script
import "sql"

data
    |> sql.to(
        driverName: "mysql",
        dataSourceName: "username:passwOrd@tcp(localhost:3306)/db",
        table: "exampleTable"
    )
SQL output
_timetag_value
2021-01-01 00:00:00t1-2
2021-01-01 00:00:10t110
2021-01-01 00:00:20t17
2021-01-01 00:00:00t219
2021-01-01 00:00:10t24
2021-01-01 00:00:20t2-3

Was this page helpful?

Thank you for your feedback!


New in InfluxDB 3.5

Key enhancements in InfluxDB 3.5 and the InfluxDB 3 Explorer 1.3.

See the Blog Post

InfluxDB 3.5 is now available for both Core and Enterprise, introducing custom plugin repository support, enhanced operational visibility with queryable CLI parameters and manual node management, stronger security controls, and general performance improvements.

InfluxDB 3 Explorer 1.3 brings powerful new capabilities including Dashboards (beta) for saving and organizing your favorite queries, and cache querying for instant access to Last Value and Distinct Value caches—making Explorer a more comprehensive workspace for time series monitoring and analysis.

For more information, check out:

InfluxDB Docker latest tag changing to InfluxDB 3 Core

On November 3, 2025, the latest tag for InfluxDB Docker images will point to InfluxDB 3 Core. To avoid unexpected upgrades, use specific version tags in your Docker deployments.

If using Docker to install and run InfluxDB, the latest tag will point to InfluxDB 3 Core. To avoid unexpected upgrades, use specific version tags in your Docker deployments. For example, if using Docker to run InfluxDB v2, replace the latest version tag with a specific version tag in your Docker pull command–for example:

docker pull influxdb:2