Documentation

写入SQL数据库

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

数据库

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

驱动程序

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

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

数据源名称

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

将敏感凭据存储为秘密

如果使用 InfluxDB CloudInfluxDB 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:00Zt1-2
2021-01-01T00:00:10Zt110
2021-01-01T00:00:20Zt17
时间标签
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 输出
时间标签
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 开源版本现已公开Alpha测试

InfluxDB 3 Open Source is now available for alpha testing, licensed under MIT or Apache 2 licensing.

我们将发布两个产品作为测试版的一部分。

InfluxDB 3 核心,是我们新的开源产品。 它是一个用于时间序列和事件数据的实时数据引擎。 InfluxDB 3 企业版是建立在核心基础之上的商业版本,增加了历史查询能力、读取副本、高可用性、可扩展性和细粒度安全性。

有关如何开始的更多信息,请查看: