文档文档

查询 SQL 数据源

此页面记录了早期版本的 InfluxDB OSS。 InfluxDB OSS v2 是最新的稳定版本。 请参阅等效的 InfluxDB v2 文档: 查询 SQL 数据源

Flux sql 包提供了用于处理 SQL 数据源的函数。 sql.from() 允许您查询 SQL 数据源,例如 PostgreSQLMySQLSQLite,并将结果用于 InfluxDB 仪表板、任务和其他操作。

查询 SQL 数据源

要查询 SQL 数据源

  1. 在您的 Flux 查询中导入 sql
  2. 使用 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 中。

示例数据包括

  • 从每个传感器收集并存储在 InfluxDBairSensors measurement 中的模拟数据

    • 温度
    • 湿度
    • 一氧化碳
  • 有关存储在 PostgreSQLsensors 表中的每个传感器的信息

    • sensor_id
    • 位置
    • 型号
    • 上次检查时间

导入和生成示例传感器数据

下载并运行示例数据生成器

air-sensor-data.rb 是一个脚本,用于生成空气传感器数据并将数据存储在 InfluxDB 中。要使用 air-sensor-data.rb

  1. 创建一个数据库 以存储数据。

  2. 下载示例数据生成器。 此工具需要 Ruby

    下载空气传感器生成器

  3. 给予 air-sensor-data.rb 可执行权限

    chmod +x air-sensor-data.rb
    
  4. 启动生成器。指定您的数据库。

    ./air-sensor-data.rb -d database-name
    

    生成器开始将数据写入 InfluxDB,并将持续运行直到停止。使用 ctrl-c 停止生成器。

    注意: 使用 --help 标志查看其他配置选项。

  5. 查询您的目标数据库以确保生成的数据正在成功写入。生成器不会捕获来自写入请求的错误,因此即使数据未成功写入 InfluxDB,它也会继续运行。

    from(bucket: "database-name/autogen")
       |> range(start: -1m)
       |> filter(fn: (r) => r._measurement == "airSensors")
    

导入示例传感器信息

  1. 下载并安装 PostgreSQL.

  2. 下载示例传感器信息 CSV。

    下载示例数据

  3. 使用 PostgreSQL 客户端 (psql 或 GUI) 创建 sensors

    CREATE TABLE sensors (
      sensor_id character varying(50),
      location character varying(50),
      model_number character varying(50),
      last_inspected date
    );
    
  4. 导入下载的 CSV 示例数据。 更新 FROM 文件路径为下载的 CSV 示例数据的路径。

    COPY sensors(sensor_id,location,model_number,last_inspected)
    FROM '/path/to/sample-sensor-info.csv' DELIMITER ',' CSV HEADER;
    
  5. 查询表以确保数据已正确导入

    SELECT * FROM sensors;
    

此页内容是否对您有帮助?

感谢您的反馈!


Flux 的未来

Flux 即将进入维护模式。您可以继续像目前一样使用它,而无需对您的代码进行任何更改。

阅读更多

现已全面上市

InfluxDB 3 Core 和 Enterprise

快速启动。更快扩展。

获取更新

InfluxDB 3 Core 是一个开源、高速、近实时数据引擎,可实时收集和处理数据,并将其持久化到本地磁盘或对象存储。InfluxDB 3 Enterprise 构建在 Core 的基础上,增加了高可用性、读取副本、增强的安全性以及数据压缩,以实现更快的查询和优化的存储。InfluxDB 3 Enterprise 的免费层可供非商业家用或业余爱好者使用。

有关更多信息,请查看