跳转到内容
搜索文档

查询数据

最后更新 查看 MarkdownAgent 设置

查询由 R2 Data Catalog 管理的 Apache Iceberg 表。可通过 Wrangler 或 HTTP API 进行 R2 SQL 查询。

获取您的数据仓库名称

要使用 R2 SQL 查询数据,您需要关联至您的 catalog 的数据仓库名称。要检索它,您可以运行 r2 bucket catalog get 命令

npx wrangler r2 bucket catalog get <BUCKET_NAME>

或者,您可以在仪表板中找到它:转到 R2 object storage(R2 对象存储) 页面,选择存储桶,切换到 Settings(设置) 选项卡,滚动到 R2 Data Catalog,并找到 Warehouse name(仓库名称)

通过 Wrangler 查询

首先,安装 npm。然后 安装 Developer Platform CLI:Wrangler

Wrangler 需要具有访问 R2 Data Catalog、R2 storage 和 R2 SQL 权限的 API 令牌来执行查询。r2 sql query 命令会在 WRANGLER_R2_SQL_AUTH_TOKEN 环境变量中查找该令牌。

设置您的环境:

export WRANGLER_R2_SQL_AUTH_TOKEN=YOUR_API_TOKEN

或者创建一个包含以下内容的 .env 文件:

WRANGLER_R2_SQL_AUTH_TOKEN=YOUR_API_TOKEN

其中 YOUR_API_TOKEN 是您使用所需权限创建的令牌。有关设置环境变量的更多信息,请参阅 Wrangler system environment variables

要运行 SQL 查询,请运行 r2 sql query 命令

npx wrangler r2 sql query <WAREHOUSE> "SELECT * FROM namespace.table_name limit 10;"

有关受支持的 SQL 命令的完整列表,请参阅 R2 SQL reference

通过 API 查询

以下是使用 REST 端点通过 R2 SQL 查询的示例:

curl -X POST \
  "https://api.sql.cloudflarestorage.com/api/v1/accounts/{ACCOUNT_ID}/r2-sql/query/{BUCKET_NAME}" \
  -H "Authorization: Bearer ${WRANGLER_R2_SQL_AUTH_TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{
    "query": "SELECT * FROM namespace.table_name limit 10;"
  }'

该 API 要求 Authorization 标头中存在具有适当权限的 API 令牌。有关创建令牌的详细信息,请参阅身份验证

有关受支持的 SQL 命令的完整列表,请参阅 R2 SQL reference

身份验证

要使用 R2 SQL 查询数据,您必须提供具有 R2 SQL、R2 Data Catalog 和 R2 storage 权限的 Cloudflare API 令牌。R2 SQL 需要这些权限来访问目录元数据并读取存储在 R2 中的底层数据文件。

在仪表板中创建 API 令牌

创建具有以下权限的 R2 API token

  • 访问 R2 Data Catalog(只读)
  • 访问 R2 storage(Admin read/write)
  • 访问 R2 SQL(只读)

当使用 Wrangler 查询时,将该令牌值用于 WRANGLER_R2_SQL_AUTH_TOKEN 环境变量;或在使用 REST API 时用于 Authorization 标头。

通过 API 创建 API 令牌

要以编程方式创建供 R2 SQL 使用的 API 令牌,您需要在您的 Access Policy 中指定 R2 SQL、R2 Data Catalog 和 R2 storage 权限组。

示例访问策略

[
	{
		"id": "f267e341f3dd4697bd3b9f71dd96247f",
		"effect": "allow",
		"resources": {
			"com.cloudflare.edge.r2.bucket.4793d734c0b8e484dfc37ec392b5fa8a_default_my-bucket": "*",
			"com.cloudflare.edge.r2.bucket.4793d734c0b8e484dfc37ec392b5fa8a_eu_my-eu-bucket": "*"
		},
		"permission_groups": [
			{
				"id": "f45430d92e2b4a6cb9f94f2594c141b8",
				"name": "Workers R2 SQL Read"
			},
			{
				"id": "d229766a2f7f4d299f20eaa8c9b1fde9",
				"name": "Workers R2 Data Catalog Write"
			},
			{
				"id": "bf7481a1826f439697cb59a20b22293e",
				"name": "Workers R2 Storage Write"
			}
		]
	}
]

要了解如何使用 API 创建 R2 SQL 令牌(包括所需的权限组和使用示例),请参阅通过 API 创建 API 令牌文档

其他资源

管理 R2 Data Catalog

在您的存储桶上启用或禁用 R2 Data Catalog,检索配置详细信息,并对您的 Iceberg 引擎进行身份验证。

这篇文档对您有帮助吗?