查询 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://127.0.0.1?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 中的模拟数据- temperature
- humidity
- co
有关存储在 PostgreSQL 的
sensors
表中每个传感器的信息- sensor_id
- location
- model_number
- last_inspected
导入和生成示例传感器数据
下载并运行示例数据生成器
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 支持。