写入SQL数据库
使用 sql.to() 将数据写入 SQL 数据库,使用 Flux。
数据库
sql.to() 支持以下 SQL 数据库:
驱动程序
sql.to()使用Go SQL驱动程序在Go sql包中连接到SQL数据库。以下驱动程序可用:
bigqueryhdbmysqlpostgressnowflakesqlite3sqlserver
数据源名称
每个 SQL driver 支持独特的数据源名称 (DSN) 语法 (也称为 连接字符串)。 有关每个驱动程序的 DSN 信息,请参见 数据库指南。
将敏感凭据存储为秘密
如果使用 InfluxDB Cloud 或 InfluxDB OSS 2.x,我们建议将 DSN 凭据存储为 InfluxDB secrets。使用 secrets.get() 从 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",
)
数据结构
sql.to() 将所有行未分组为一个单一表,并将所有现有列写入指定的目标表。
如果目标表不存在,sql.to() 尝试创建它。
列数据类型
每个 sql.to() 驱动程序 将 Flux 基本数据类型 转换为目标数据库支持的相应数据类型。请参阅 数据库指南 以获取有关数据类型转换的信息。
示例
给定以下表格流:
数据
| 时间 | 标签 | 值 |
|---|---|---|
| 2021-01-01T00:00:00Z | t1 | -2 |
| 2021-01-01T00:00:10Z | t1 | 10 |
| 2021-01-01T00:00:20Z | t1 | 7 |
| 时间 | 标签 | 值 |
|---|---|---|
| 2021-01-01T00:00:00Z | t2 | 19 |
| 2021-01-01T00:00:10Z | t2 | 4 |
| 2021-01-01T00:00:20Z | t2 | -3 |
Flux 脚本
import "sql"
data
|> sql.to(
driverName: "mysql",
dataSourceName: "username:passwOrd@tcp(localhost:3306)/db",
table: "exampleTable"
)
SQL 输出
| 时间 | 标签 | 值 |
|---|---|---|
| 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 |