使用Go查询数据
使用 InfluxDB influxdb3-go Go 客户端库包和 SQL 或 InfluxQL 来查询存储在 InfluxDB 中的数据。通过 Flight+gRPC 协议执行查询并检索数据,然后使用常见的 Go 工具处理数据。
开始使用Go查询InfluxDB
以下示例展示了如何使用 Go 和 influxdb3-go 模块来创建客户端并查询 InfluxDB 集群数据库。
安装 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 client,使用客户端查询方法选择测量中的所有字段,然后访问查询结果数据和元数据。
在你的 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)并传递以下参数:
- 选项: 一个
QueryOptions结构体,其中QueryType属性设置为influxdb3.InfluxQL。 - query: 一个字符串。要执行的 SQL 或 InfluxQL 查询。
QueryWithOptions返回以下内容:*influxdb3.QueryIterator: 一个自定义迭代器,提供对查询结果数据和元数据的访问。error: 一个 Flight 请求错误。
- 选项: 一个
运行示例
在你的
influxdb_go_client模块目录中,创建一个名为main.go的文件。在
main.go中,输入以下示例代码以定义一个main()可执行函数,该函数调用Query()函数:package main func main() { Query() }在你的终端中,输入以下命令以安装必要的包、构建模块和运行程序:
go build && go run influxdb_go_client程序执行
main()函数,该函数写入数据并将查询结果打印到控制台。