查询 SQL 数据库
使用 sql.from() 来使用Flux查询SQL数据库。
数据库
sql.from() 支持以下 SQL 数据库:
驱动程序
sql.from() 使用 Go SQL drivers
在 Go sql package 中连接到 SQL 数据库。
以下驱动程序可用:
awsathenabigqueryhdbmysqlpostgressnowflakesqlite3sqlserververtica,vertigo
数据源名称
每个 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.from(
driverName: "postgres",
dataSourceName: "postgresql://${username}:${password}@localhost:5432",
query: "SELECT * FROM example_table",
)
结果结构
sql.from() 返回一个 表的流
没有分组(所有行在一个表中)。
有关表分组的更多信息,请参见
Flux 数据模型 - 重新结构化表。
列数据类型
每个 sql.from() driver 将源数据库中的列数据类型转换为 Flux data types。有关数据类型转换的信息,请参见 database guides。
给定以下example_table在MySQL数据库中:
示例表
| 身份证 | 名称 | 地址 | 国家 |
|---|---|---|---|
| 1 | 阿尔弗雷德食品箱 | 上街 57 号 | 德国 |
| 2 | Ana Trujillo 三明治和冰淇淋 | 宪法大道 2222 | 墨西哥 |
| 3 | 安东尼奥·莫雷诺餐厅 | 马塔德罗斯 2312 | 墨西哥 |
| 4 | 在角落附近 | 汉诺威广场120号 | 英国 |
| 5 | 贝尔格伦的快速超市 | 贝尔古夫斯韦根 8 | 瑞典 |
Flux 查询
import "sql"
sql.from(
driverName: "mysql",
dataSourceName: "username:passwOrd@tcp(localhost:3306)/db",
query: "SELECT ID, Name FROM example_table",
)
输出
| 编号 | 名称 |
|---|---|
| 1 | 阿尔弗雷德的食品商店 |
| 2 | Ana Trujillo 三明治和冰淇淋 |
| 3 | 安东尼奥·莫雷诺餐厅 |
| 4 | 环绕角 |
| 5 | 伯格伦兹超市 |