文档文档

查询 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://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 中。

示例数据包括

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

    • temperature
    • humidity
    • co
  • 有关存储在 PostgreSQLsensors 表中每个传感器的信息

    • sensor_id
    • location
    • model_number
    • last_inspected

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

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

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 开源版现已公开发布 Alpha 版本

InfluxDB 3 开源版现已可用于 Alpha 测试,根据 MIT 或 Apache 2 许可获得许可。

我们正在发布两个产品作为 Alpha 版本的一部分。

InfluxDB 3 Core 是我们新的开源产品。 它是用于时间序列和事件数据的最新数据引擎。 InfluxDB 3 Enterprise 是一个商业版本,它建立在 Core 的基础上,增加了历史查询功能、读取副本、高可用性、可扩展性和细粒度的安全性。

有关如何开始使用的更多信息,请查看