使用 Go 查询数据
使用 InfluxDB influxdb3-go
Go 客户端库包和 SQL 或 InfluxQL 查询存储在 InfluxDB 中的数据。通过 Flight+gRPC 协议执行查询并检索数据,然后使用常见的 Go 工具处理数据。
开始使用 Go 查询 InfluxDB
以下示例演示如何使用 Go 和 influxdb3-go
模块创建客户端并查询 InfluxDB Clustered 数据库。
安装 Go
按照 Go 下载和安装说明 安装适用于您系统的 Go 编程语言的最新版本。
创建 Go 模块目录
在您的项目目录中,创建一个新的模块目录并导航到其中。
mkdir influxdb_go_client && cd $_
输入以下命令以初始化新的 Go 模块
go mod init influxdb_go_client
安装依赖项
在您的终端中,输入以下命令以下载并安装客户端库
go get github.com/InfluxCommunity/influxdb3-go/v2
influxdb3-go
*: 提供influxdb3
包,并安装 Apachearrow
模块,用于处理从查询返回的 Arrow 数据。
安装依赖项后,您就可以查询和分析存储在 InfluxDB 数据库中的数据了。
执行查询
以下示例演示如何创建 InfluxDB 客户端,使用客户端查询方法选择测量中的所有字段,然后访问查询结果数据和元数据。
在您的 influxdb_go_client
模块目录中,创建一个名为 query.go
的文件,并输入以下示例之一以使用 SQL 或 InfluxQL 进行查询。
替换示例代码中的以下配置值
示例代码执行以下操作
- 为您的模块定义
main
包,并导入您将在代码中使用的包。 - 定义
Query()
函数。 - 使用 InfluxDB 凭据实例化
influxdb3
客户端,并将其分配给client
变量。 - 定义一个延迟函数,该函数在
Query()
执行完成后关闭客户端。 - 定义要执行的 SQL 查询。
- 调用客户端的
Query(ctx context.Context, query string)
方法,并将 SQL 字符串作为query
参数传递。Query()
返回以下内容*influxdb3.QueryIterator
: 用于从查询结果流中读取数据的自定义迭代器。error
: Flight 请求错误。
示例代码执行以下操作
为您的模块定义
main
包,并导入您将在代码中使用的包。定义
Query()
函数。使用 InfluxDB 凭据实例化
influxdb3
客户端,并将其分配给client
变量。定义一个延迟函数,该函数在
Query()
执行完成后关闭客户端。定义要执行的 InfluxQL 查询。
调用以下客户端方法
QueryWithOptions(ctx context.Context, options *QueryOptions, query string)
并传递以下参数
- options:
QueryOptions
结构体,其QueryType
属性设置为influxdb3.InfluxQL
。 - query: 字符串。要执行的 SQL 或 InfluxQL 查询。
QueryWithOptions
返回以下内容*influxdb3.QueryIterator
: 一个自定义迭代器,提供对查询结果数据和元数据的访问。error
: Flight 请求错误。
- options:
运行示例
在您的
influxdb_go_client
模块目录中,创建一个名为main.go
的文件。在
main.go
中,输入以下示例代码以定义一个main()
可执行函数,该函数调用Query()
函数package main func main() { Query() }
在您的终端中,输入以下命令以安装必要的包,构建模块并运行程序
go build && go run influxdb_go_client
程序执行
main()
函数,该函数写入数据并将查询结果打印到控制台。
此页内容是否对您有帮助?
感谢您的反馈!
支持和反馈
感谢您成为我们社区的一份子!我们欢迎并鼓励您提供关于 InfluxDB Clustered 和本文档的反馈和错误报告。要获得支持,请使用以下资源
拥有年度合同或支持合同的客户可以联系 InfluxData 支持。