⌘+k ctrl+k
1.4 (LTS)
搜索快捷键 cmd + k | ctrl + k
安装扩展

要安装核心 DuckDB 扩展,请使用 INSTALL 命令。例如

INSTALL httpfs;

这将从默认存储库(core)安装扩展。

扩展存储库

默认情况下,DuckDB 扩展从单一存储库安装,该存储库包含由 DuckDB 核心团队构建并签名的扩展。这确保了核心扩展集的稳定性和安全性。这些扩展位于默认的 core 存储库中,该存储库指向 http://extensions.duckdb.org

除核心存储库外,DuckDB 还支持从其他存储库安装扩展。例如,core_nightly 存储库包含为 DuckDB 最新稳定版本构建的核心扩展的每日构建版本(nightly builds)。这允许用户在正式发布扩展之前试用其中的新功能。

从不同存储库安装扩展

要从默认存储库(core)安装扩展,请运行

INSTALL httpfs;

要明确从核心存储库安装扩展,请运行

INSTALL httpfs FROM core;
-- or
INSTALL httpfs FROM 'http://extensions.duckdb.org';

要从核心每日构建(nightly)存储库安装扩展

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 包含以下预定义存储库

别名 URL 描述
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 时创建的存储库(用于开发)

使用多个存储库

在使用来自不同存储库的扩展时,尤其是混合使用 corecore_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 哈希值。因此,例如 macOS ARM64 (Apple Silicon) 上 DuckDB 版本 v0.10.3 的扩展被安装到 ~/.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 上的 1.2.1 版 CLI 客户端安装的,那么只要 Python、R 等客户端库有权访问用户的主目录并使用 DuckDB 1.2.1 版本,它们就可以使用该扩展。

限制

DuckDB 的扩展机制具有以下局限性

  • 扩展无法卸载。
  • 扩展无法重新加载。如果您 更新了扩展,请重启 DuckDB 进程以使用新的扩展。
© 2025 DuckDB 基金会,阿姆斯特丹,荷兰
行为准则 商标使用指南