文档文档

InfluxDB 3 的 Go 客户端库

InfluxDB 3 的 influxdb3-go Go 客户端库 可与 Go 脚本和应用程序集成,用于将数据写入 InfluxDB 3 Core 数据库并从中查询数据。

安装

go get github.com/InfluxCommunity/influxdb3-go/v2

导入包

influxdb3-go 客户端库模块提供了 influxdb3 包。

导入包

import (
    "github.com/InfluxCommunity/influxdb3-go/v2/influxdb3"
)

API 参考

函数 New

创建一个客户端以与 InfluxDB 进行交互。

语法

New(config ClientConfig)

初始化并返回一个 influxdb3.Client 实例,其中包含以下内容:

  • 用于写入数据库的配置和函数。
  • 一个 *flight.Client 和用于查询数据库的函数。

参数

  • config:一个 ClientConfig 结构体,包含以下配置属性:

    • Host (string):InfluxDB 3 Core 服务器 URL
    • Token (string):数据库令牌字符串
    • Database (string):用于写入和查询的数据库。
    • Organization (string):可选。组织名称或 ID。
    • HTTPClient (*http.Client):可选。指定一个自定义 HTTP 客户端、TLS 配置或超时。
    • WriteOptions (*WriteOptions):可选。传递给写入客户端的选项,用于写入数据库。
    • Headers (http.Header):可选。包含在所有请求中的标头。

示例

创建 InfluxDB 客户端
package main

import (
    "github.com/InfluxCommunity/influxdb3-go/v2/influxdb3"
)

func main() {
    client, err := influxdb3.New(influxdb3.ClientConfig{
        Host:       "https://:8181",
        Token:      "
DATABASE_TOKEN
"
,
Database: "
DATABASE_NAME
"
,
}) defer func(client *influxdb3.Client) { err := client.Close() if err != nil { panic(err) } }(client) if(err != nil) { panic(err) } }

替换以下配置值

  • DATABASE_NAME:要查询的 InfluxDB 数据库的名称
  • DATABASE_TOKEN:一个 InfluxDB 数据库令牌,对指定数据库具有读取权限

类 influxdb3.Client

函数 Client.Query()

使用 SQL 从 InfluxDB 3 查询数据。

语法

client.Query(ctx context.Context, query string)

向 InfluxDB 发送一个带有 SQL 的 Flight 查询请求。

返回以下内容:

  • 一个自定义迭代器 (*QueryIterator),用于访问查询结果数据和元数据。
  • 一个错误(如果有)。

参数

  • ctx (context.Context):用于请求的上下文
  • query (string):要执行的 SQL 查询。

示例

使用 SQL 查询
query := `SELECT *
  FROM home
  WHERE time >= '2022-01-02T08:00:00Z'
  AND time <= '2022-01-02T20:00:00Z'`

iterator, err := client.Query(context.Background(), query)

函数 Client.QueryWithOptions()

使用查询选项(例如,用于使用 InfluxQL 进行查询的查询类型)从 InfluxDB 3 查询数据。

语法

client.QueryWithOptions(ctx context.Context, options *QueryOptions, query string)

向 InfluxDB 发送一个带有指定查询选项的查询请求。

返回以下内容:

  • 一个自定义迭代器 (*QueryIterator),用于访问查询结果数据和元数据。
  • 一个错误(如果有)。

参数

  • ctx (context.Context):用于请求的上下文
  • options:查询选项(查询类型、可选数据库)
  • query (string):要执行的 SQL 或 InfluxQL 查询。

示例

使用 InfluxQL 查询
query := `SELECT *
  FROM home
  WHERE time >= 1641124000s
  AND time <= 1641124000s + 8h`
queryOptions := influxdb3.QueryOptions{QueryType: influxdb3.InfluxQL}
iterator, err := client.QueryWithOptions(context.Background(), &queryOptions, query)

此页面是否有帮助?

感谢您的反馈!


InfluxDB 3.8 新特性

InfluxDB 3.8 和 InfluxDB 3 Explorer 1.6 的主要增强功能。

查看博客文章

InfluxDB 3.8 现已适用于 Core 和 Enterprise 版本,同时发布了 InfluxDB 3 Explorer UI 的 1.6 版本。本次发布着重于操作成熟度,以及如何更轻松地部署、管理和可靠地运行 InfluxDB。

更多信息,请查看

InfluxDB Docker 的 latest 标签将指向 InfluxDB 3 Core

在 **2026 年 2 月 3 日**,InfluxDB Docker 镜像的 latest 标签将指向 InfluxDB 3 Core。为避免意外升级,请在您的 Docker 部署中使用特定的版本标签。

如果使用 Docker 来安装和运行 InfluxDB,latest 标签将指向 InfluxDB 3 Core。为避免意外升级,请在您的 Docker 部署中使用特定的版本标签。例如,如果使用 Docker 运行 InfluxDB v2,请将 latest 版本标签替换为 Docker pull 命令中的特定版本标签 — 例如

docker pull influxdb:2