- 安装
- 文档
- 入门
- 连接
- 数据导入
- 客户端 API
- 概览
- ADBC
- C
- C++
- CLI
- Dart
- Go
- Java (JDBC)
- Julia
- Node.js (已弃用)
- Node.js (Neo)
- ODBC
- PHP
- Python
- R
- Rust
- Swift
- Wasm
- SQL
- 介绍
- 语句
- 概览
- ANALYZE
- ALTER TABLE
- ALTER VIEW
- ATTACH 和 DETACH
- CALL
- CHECKPOINT
- COMMENT ON
- COPY
- CREATE INDEX
- CREATE MACRO
- CREATE SCHEMA
- CREATE SECRET
- CREATE SEQUENCE
- CREATE TABLE
- CREATE VIEW
- CREATE TYPE
- DELETE
- DESCRIBE
- DROP
- EXPORT 和 IMPORT DATABASE
- INSERT
- LOAD / INSTALL
- PIVOT
- 性能分析
- SELECT
- SET / RESET
- SET VARIABLE
- SUMMARIZE
- 事务管理
- UNPIVOT
- UPDATE
- USE
- VACUUM
- 查询语法
- SELECT
- FROM 和 JOIN
- WHERE
- GROUP BY
- GROUPING SETS
- HAVING
- ORDER BY
- LIMIT 和 OFFSET
- SAMPLE
- 展开嵌套
- WITH
- WINDOW
- QUALIFY
- VALUES
- FILTER
- 集合操作
- 预处理语句
- 数据类型
- 表达式
- 函数
- 概览
- 聚合函数
- 数组函数
- 位字符串函数
- Blob 函数
- 日期格式化函数
- 日期函数
- 日期部分函数
- 枚举函数
- 间隔函数
- Lambda 函数
- 列表函数
- 映射函数
- 嵌套函数
- 数值函数
- 模式匹配
- 正则表达式
- 结构体函数
- 文本函数
- 时间函数
- 时间戳函数
- 带时区时间戳函数
- 联合函数
- 实用函数
- 窗口函数
- 约束
- 索引
- 元查询
- DuckDB 的 SQL 方言
- 示例
- 配置
- 扩展
- 核心扩展
- 概览
- 自动补全
- Avro
- AWS
- Azure
- Delta
- DuckLake
- 编码
- Excel
- 全文搜索
- httpfs (HTTP 和 S3)
- Iceberg
- ICU
- inet
- jemalloc
- MySQL
- PostgreSQL
- 空间
- SQLite
- TPC-DS
- TPC-H
- UI
- VSS
- 指南
- 概览
- 数据查看器
- 数据库集成
- 文件格式
- 概览
- CSV 导入
- CSV 导出
- 直接读取文件
- Excel 导入
- Excel 导出
- JSON 导入
- JSON 导出
- Parquet 导入
- Parquet 导出
- 查询 Parquet 文件
- 使用 file: 协议访问文件
- 网络和云存储
- 概览
- HTTP Parquet 导入
- S3 Parquet 导入
- S3 Parquet 导出
- S3 Iceberg 导入
- S3 Express One
- GCS 导入
- Cloudflare R2 导入
- 通过 HTTPS / S3 使用 DuckDB
- Fastly 对象存储导入
- 元查询
- ODBC
- 性能
- Python
- 安装
- 执行 SQL
- Jupyter Notebooks
- marimo Notebooks
- Pandas 上的 SQL
- 从 Pandas 导入
- 导出到 Pandas
- 从 Numpy 导入
- 导出到 Numpy
- Arrow 上的 SQL
- 从 Arrow 导入
- 导出到 Arrow
- Pandas 上的关系型 API
- 多个 Python 线程
- 与 Ibis 集成
- 与 Polars 集成
- 使用 fsspec 文件系统
- SQL 编辑器
- SQL 功能
- 代码片段
- 故障排除
- 术语表
- 离线浏览
- 操作手册
- 开发
- 内部结构
- 为什么选择 DuckDB
- 行为准则
- 发布日历
- 路线图
- 站点地图
- 在线演示
iceberg
扩展支持连接 Iceberg REST 目录。在连接 Iceberg REST 目录之前,您必须按照概述中的说明安装 iceberg
扩展。
如果您要连接由 Amazon 管理的 Iceberg REST 目录,请参阅连接 Amazon S3 表或 Amazon Sagemaker Lakehouse 的说明。
对于所有其他 Iceberg REST 目录,您可以按照以下说明操作。有关特定目录的问题,请参阅示例部分。
大多数 Iceberg REST 目录通过 OAuth2 进行身份验证。您可以使用现有的 DuckDB 密钥工作流来存储 OAuth2 服务的登录凭据。
CREATE SECRET iceberg_secret (
TYPE ICEBERG,
CLIENT_ID 'admin',
CLIENT_SECRET 'password',
OAUTH2_SERVER_URI 'http://irc_host_url.com/v1/oauth/tokens'
);
如果您已有 Bearer 令牌,可以直接将其传递给您的 CREATE SECRET
语句
CREATE SECRET iceberg_secret (
TYPE ICEBERG,
TOKEN 'bearer_token'
);
您可以使用以下 ATTACH
语句连接 Iceberg 目录。
ATTACH 'warehouse' AS iceberg_catalog (
TYPE iceberg,
SECRET iceberg_secret, -- pass a specific secret name to prevent ambiguity
ENDPOINT https://rest_endpoint.com
);
要查看可用表,请运行
SHOW ALL TABLES;
ATTACH 选项
带有 OAuth2 授权的 REST 目录也可以仅使用 ATTACH
语句进行连接。请参见下方 REST 目录的完整 ATTACH
选项列表。
参数 | 类型 | 默认值 | 描述 |
---|---|---|---|
ENDPOINT_TYPE |
VARCHAR |
NULL |
用于连接 S3Tables 或 Glue 目录。允许的值为 'GLUE' 和 'S3_TABLES' |
ENDPOINT |
VARCHAR |
NULL |
用于与 REST 目录通信的 URL 端点。不能与 ENDPOINT_TYPE 结合使用 |
SECRET |
VARCHAR |
NULL |
用于与 REST 目录通信的密钥名称 |
CLIENT_ID |
VARCHAR |
NULL |
用于密钥的 CLIENT_ID |
CLIENT_SECRET |
VARCHAR |
NULL |
密钥所需的 CLIENT_SECRET |
DEFAULT_REGION |
VARCHAR |
NULL |
与存储层通信时使用的默认区域 |
OAUTH2_SERVER_URI |
VARCHAR |
NULL |
获取 Bearer 令牌的 OAuth2 服务器 URL |
AUTHORIZATION_TYPE |
VARCHAR |
OAUTH2 |
对于需要 SigV4 授权的目录,请传递 SigV4 |
以下选项只能传递给 CREATE SECRET
语句,并且它们要求 AUTHORIZATION_TYPE
为 OAUTH2
参数 | 类型 | 默认值 | 描述 |
---|---|---|---|
OAUTH2_GRANT_TYPE |
VARCHAR |
NULL |
请求 OAuth 令牌时的授权类型 |
OAUTH2_SCOPE |
VARCHAR |
NULL |
返回的 OAuth 访问令牌的请求范围 |
特定目录示例
R2 目录
要连接到 R2 cloudflare 管理的目录,请按照以下连接步骤操作。
CREATE SECRET r2_secret (
TYPE ICEBERG,
TOKEN 'r2_token'
);
您可以按照入门中的创建 API 令牌步骤来创建令牌。
然后,使用以下命令连接目录。
ATTACH 'warehouse' AS my_r2_catalog (
TYPE ICEBERG,
ENDPOINT 'catalog-uri'
);
warehouse
和 catalog-uri
变量将在所需 R2 对象存储目录的设置中提供(R2 对象存储 > 目录名称 > 设置)。
Polaris
要连接到 Polaris 目录,以下命令将起作用。
CREATE SECRET polaris_secret (
TYPE ICEBERG,
CLIENT_ID 'admin',
CLIENT_SECRET 'password',
);
ATTACH 'quickstart_catalog' as polaris_catalog (
TYPE ICEBERG,
ENDPOINT 'polaris_rest_catalog_endpoint'
);
Lakekeeper
要连接到 Lakekeeper 目录,以下命令将起作用。
CREATE SECRET lakekeeper_secret (
TYPE ICEBERG,
CLIENT_ID 'admin',
CLIENT_SECRET 'password',
OAUTH2_SCOPE 'scope',
OAUTH2_SERVER_URI 'lakekeeper_oauth_url'
);
ATTACH 'warehouse' as lakekeeper_catalog (
TYPE ICEBERG,
ENDPOINT 'lakekeeper_irc_url',
SECRET lakekeeper_secret
);
限制
目前尚不支持从由非 S3 或 S3Tables 远程存储支持的 Iceberg REST 目录中读取数据。