- 安装
- 文档
- 入门
- 连接
- 数据导入
- 客户端 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
- 行为准则
- 发布日历
- 路线图
- 站点地图
- 在线演示
要安装核心 DuckDB 扩展,请使用 INSTALL
命令。例如
INSTALL httpfs;
这将从默认仓库(core
)安装扩展。
扩展仓库
默认情况下,DuckDB 扩展从一个包含由核心 DuckDB 团队构建和签名的扩展的仓库安装。这确保了核心扩展集的稳定性和安全性。这些扩展位于默认的 core
仓库中,该仓库指向 http://extensions.duckdb.org
。
除了核心仓库,DuckDB 还支持从其他仓库安装扩展。例如,core_nightly
仓库包含为最新稳定版 DuckDB 构建的核心扩展的每夜构建。这允许用户在扩展正式发布之前试用新功能。
从不同仓库安装扩展
要从默认仓库(core
)安装扩展,请运行
INSTALL httpfs;
要明确地从核心仓库安装扩展,请运行
INSTALL httpfs FROM core;
-- or
INSTALL httpfs FROM 'http://extensions.duckdb.org';
要从核心每夜仓库安装扩展
INSTALL spatial FROM core_nightly;
-- or
INSTALL spatial FROM 'http://nightly-extensions.duckdb.org';
要从自定义仓库安装扩展
INSTALL custom_extension FROM 'https://my-custom-extension-repository';
或者,可以使用 custom_extension_repository
设置来更改 DuckDB 使用的默认仓库
SET custom_extension_repository = 'http://nightly-extensions.duckdb.org';
DuckDB 包含以下预定义仓库
别名 | 网址 | 描述 |
---|---|---|
core |
http://extensions.duckdb.org |
DuckDB 核心扩展 |
core_nightly |
http://nightly-extensions.duckdb.org |
core 的每夜构建 |
community |
http://community-extensions.duckdb.org |
DuckDB 社区扩展 |
local_build_debug |
./build/debug/repository |
在调试模式下从源代码构建 DuckDB 时创建的仓库(用于开发) |
local_build_release |
./build/release/repository |
在发布模式下从源代码构建 DuckDB 时创建的仓库(用于开发) |
使用多个仓库
当使用来自不同仓库的扩展时,尤其是在混合使用 core
和 core_nightly
时,了解不同扩展的来源和版本非常重要。因此,DuckDB 会在扩展安装元数据中跟踪这些信息。例如
INSTALL httpfs FROM core;
INSTALL aws FROM core_nightly;
SELECT extension_name, extension_version, installed_from, install_mode
FROM duckdb_extensions();
输出如下
extensions_name | extensions_version | installed_from | install_mode |
---|---|---|---|
httpfs | 62d61a417f | core | REPOSITORY |
aws | 42c78d3 | core_nightly | REPOSITORY |
… | … | … | … |
强制安装以升级扩展
当 DuckDB 安装扩展时,它会被复制到本地目录进行缓存,以避免未来的网络流量。任何后续对 INSTALL extension_name
的调用都将使用本地版本,而不是再次下载扩展。要强制重新下载扩展,请运行
FORCE INSTALL extension_name;
强制安装也可以用于用来自另一个仓库的同名扩展覆盖现有扩展,
例如,首先,从核心仓库安装 spatial
INSTALL spatial;
然后,要用来自 core_nightly
仓库的 spatial
扩展覆盖此安装
FORCE INSTALL spatial FROM core_nightly;
在仓库之间切换
要为扩展切换仓库,请使用 FORCE INSTALL
命令。例如,如果您已从 core_nightly
仓库安装了 httpfs
,但希望切换回使用 core
,请运行
FORCE INSTALL httpfs FROM core;
通过客户端 API 安装扩展
对于许多客户端来说,使用 SQL 加载和安装扩展是首选方法。然而,一些客户端有专用的 API 来安装和加载扩展。例如,Python 客户端有专用的 install_extension(name: str)
和 load_extension(name: str)
方法。有关特定客户端 API 的更多详细信息,请参阅客户端 API 文档
安装位置
默认情况下,扩展安装在用户的主目录下
~/.duckdb/extensions/duckdb_version/platform_name/
对于稳定的 DuckDB 版本,duckdb_version
将等于该版本的版本标签。对于 DuckDB 每夜构建,它将等于构建的简短 Git 哈希。因此,例如,DuckDB v0.10.3 版本在 macOS ARM64 (Apple Silicon) 上的扩展将安装到 ~/.duckdb/extensions/v0.10.3/osx_arm64/
。一个 DuckDB 每夜构建的示例安装路径可能是 ~/.duckdb/extensions/fc2e4b26a6/linux_amd64
。
要更改 DuckDB 存储其扩展的默认位置,请使用 extension_directory
配置选项
SET extension_directory = '/path/to/your/extension/directory';
请注意,设置 home_directory
配置选项的值对扩展的位置没有影响。
卸载扩展
目前,DuckDB 不提供卸载扩展的命令。要卸载扩展,请导航到扩展的安装位置并删除其 .duckdb_extension
二进制文件:例如
rm ~/.duckdb/extensions/v1.2.1/osx_arm64/excel.duckdb_extension
在客户端之间共享扩展
共享安装位置允许在相同 DuckDB 版本的客户端 API 之间共享扩展,只要它们共享相同的 platform
或 ABI。例如,如果扩展通过 macOS 上的 CLI 客户端版本 1.2.1 安装,则只要 Python、R 等客户端库可以访问用户的主目录并使用 DuckDB 版本 1.2.1,它们就可以使用该扩展。
限制
DuckDB 的扩展机制有以下限制
- 扩展无法卸载。
- 扩展无法重新加载。如果您更新扩展,请重新启动 DuckDB 进程以使用新的扩展。