查询 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
度量中- 温度
- 湿度
- co
存储在 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;
这个页面有帮助吗?
感谢您的反馈!