文档文档

写入 SQL 数据库

使用 sql.to() 通过 Flux 将数据写入 SQL 数据库。

数据库

sql.to() 支持以下 SQL 数据库

驱动程序

sql.to() 使用 Go SQL 驱动程序Go sql 包 中连接到 SQL 数据库。以下驱动程序可用

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

数据源名称

每个 SQL 驱动程序 都支持唯一的数据源名称 (DSN) 语法(也称为 连接字符串)。有关每个驱动程序的 DSN 信息,请参阅数据库指南

将敏感凭据存储为密钥

如果使用 InfluxDB CloudInfluxDB OSS 2.x,我们建议将 DSN 凭据存储为 InfluxDB 密钥。使用 secrets.get() 从 InfluxDB 密钥 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",
)

数据结构

sql.to() 将所有行取消分组到单个表中,并将所有现有列写入为指定的目标表。如果目标表不存在,sql.to() 将尝试创建它。

列数据类型

每个 sql.to() 驱动程序Flux 基本数据类型 转换为目标数据库支持的相应数据类型。有关数据类型转换的信息,请参阅数据库指南

示例

给定以下 表流

数据
_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 脚本
import "sql"

data
    |> sql.to(
        driverName: "mysql",
        dataSourceName: "username:passwOrd@tcp(localhost:3306)/db",
        table: "exampleTable"
    )
SQL 输出
_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

此页面是否对您有帮助?

感谢您的反馈!


Flux 的未来

Flux 即将进入维护模式。您可以继续像现在这样使用它,而无需对代码进行任何更改。

了解更多

现已全面上市

InfluxDB 3 Core 和 Enterprise

快速启动。更快扩展。

获取更新

InfluxDB 3 Core 是一个开源、高速、最近数据引擎,可实时收集和处理数据,并将其持久化到本地磁盘或对象存储。InfluxDB 3 Enterprise 以 Core 的基础为构建,增加了高可用性、读取副本、增强的安全性以及数据压缩,从而实现更快的查询和优化的存储。InfluxDB 3 Enterprise 的免费层可供非商业家庭或业余爱好者使用。

有关更多信息,请查看