查询 SQL 数据源
此页面记录了早期版本的 InfluxDB OSS。 InfluxDB OSS v2 是最新的稳定版本。 请参阅等效的 InfluxDB v2 文档: 查询 SQL 数据源。
Flux sql
包提供了用于处理 SQL 数据源的函数。 sql.from()
允许您查询 SQL 数据源,例如 PostgreSQL、MySQL 和 SQLite,并将结果用于 InfluxDB 仪表板、任务和其他操作。
查询 SQL 数据源
要查询 SQL 数据源
- 在您的 Flux 查询中导入
sql
包 - 使用
sql.from()
函数来指定驱动程序、数据源名称 (DSN) 和用于从您的 SQL 数据源查询数据的查询
import "sql"
sql.from(
driverName: "postgres",
dataSourceName: "postgresql://user:password@localhost",
query: "SELECT * FROM example_table"
)
import "sql"
sql.from(
driverName: "mysql",
dataSourceName: "user:password@tcp(localhost:3306)/db",
query: "SELECT * FROM example_table"
)
// NOTE: InfluxDB OSS and InfluxDB Cloud do not have access to
// the local filesystem and cannot query SQLite data sources.
// Use the Flux REPL to query an SQLite data source.
import "sql"
sql.from(
driverName: "sqlite3",
dataSourceName: "file:/path/to/test.db?cache=shared&mode=ro",
query: "SELECT * FROM example_table"
)
请参阅 sql.from()
文档,了解有关所需函数参数的信息。
将 SQL 数据与 InfluxDB 中的数据连接
从 InfluxDB 查询 SQL 数据源的主要好处之一是能够使用存储在 InfluxDB 外部的数据来丰富查询结果。
使用下面的 空气传感器示例数据,以下查询将存储在 InfluxDB 中的空气传感器指标与存储在 PostgreSQL 中的传感器信息连接起来。连接后的数据使您可以根据未存储在 InfluxDB 中的传感器信息查询和过滤结果。
// Import the "sql" package
import "sql"
// Query data from PostgreSQL
sensorInfo = sql.from(
driverName: "postgres",
dataSourceName: "postgresql://localhost?sslmode=disable",
query: "SELECT * FROM sensors"
)
// Query data from InfluxDB
sensorMetrics = from(bucket: "telegraf/autogen")
|> range(start: -1h)
|> filter(fn: (r) => r._measurement == "airSensors")
// Join InfluxDB query results with PostgreSQL query results
join(tables: {metric: sensorMetrics, info: sensorInfo}, on: ["sensor_id"])
示例传感器数据
示例数据生成器 和 示例传感器信息 模拟了一组传感器,这些传感器测量建筑物内房间的温度、湿度和一氧化碳。每个收集的数据点都存储在 InfluxDB 中,并带有 sensor_id
标签,用于标识其来源的特定传感器。示例传感器信息存储在 PostgreSQL 中。
示例数据包括
从每个传感器收集并存储在 InfluxDB 的
airSensors
measurement 中的模拟数据- 温度
- 湿度
- 一氧化碳
有关存储在 PostgreSQL 的
sensors
表中的每个传感器的信息- sensor_id
- 位置
- 型号
- 上次检查时间
导入和生成示例传感器数据
下载并运行示例数据生成器
air-sensor-data.rb
是一个脚本,用于生成空气传感器数据并将数据存储在 InfluxDB 中。要使用 air-sensor-data.rb
创建一个数据库 以存储数据。
下载示例数据生成器。 此工具需要 Ruby。
给予
air-sensor-data.rb
可执行权限chmod +x air-sensor-data.rb
启动生成器。指定您的数据库。
./air-sensor-data.rb -d database-name
生成器开始将数据写入 InfluxDB,并将持续运行直到停止。使用
ctrl-c
停止生成器。注意: 使用
--help
标志查看其他配置选项。查询您的目标数据库以确保生成的数据正在成功写入。生成器不会捕获来自写入请求的错误,因此即使数据未成功写入 InfluxDB,它也会继续运行。
from(bucket: "database-name/autogen") |> range(start: -1m) |> filter(fn: (r) => r._measurement == "airSensors")
导入示例传感器信息
下载示例传感器信息 CSV。
使用 PostgreSQL 客户端 (
psql
或 GUI) 创建sensors
表CREATE TABLE sensors ( sensor_id character varying(50), location character varying(50), model_number character varying(50), last_inspected date );
导入下载的 CSV 示例数据。 更新
FROM
文件路径为下载的 CSV 示例数据的路径。COPY sensors(sensor_id,location,model_number,last_inspected) FROM '/path/to/sample-sensor-info.csv' DELIMITER ',' CSV HEADER;
查询表以确保数据已正确导入
SELECT * FROM sensors;
此页内容是否对您有帮助?
感谢您的反馈!
支持和反馈
感谢您成为我们社区的一份子!我们欢迎并鼓励您提供关于 InfluxDB 和本文档的反馈和错误报告。要获得支持,请使用以下资源
拥有年度合同或支持合同的客户 可以联系 InfluxData 支持。