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

DuckDB 具有灵活的扩展机制,允许动态加载扩展。扩展可以通过提供对额外文件格式的支持、引入新类型以及特定领域的功能来增强 DuckDB 的功能。

扩展可在所有客户端(例如 Python 和 R)上加载。通过核心(Core)和社区(Community)仓库分发的扩展均在 macOS、Windows 和 Linux 上进行构建和测试。所有操作系统均支持 AMD64 和 ARM64 架构。

列出扩展

要获取扩展列表,请使用 duckdb_extensions 函数

SELECT extension_name, installed, description
FROM duckdb_extensions();
扩展名称 已安装 description
arrow false Apache Arrow 与 DuckDB 之间的零拷贝数据集成
autocomplete false 在 Shell 中添加自动补全支持

此列表将显示哪些扩展可用、哪些扩展已安装、其版本、安装位置等信息。该列表包含了大部分(但非全部)可用的核心扩展。如需完整列表,我们维护了一份 核心扩展列表

提示:我们提供了一个端点,以 JSON 文件形式提供每周扩展下载统计数据:核心扩展社区扩展

内置扩展

DuckDB 的二进制发行版标准配置中包含一些内置扩展。它们被静态链接到二进制文件中,可以直接使用。例如,使用内置的 json 扩展 读取 JSON 文件:

SELECT *
FROM 'test.json';

为了保持 DuckDB 发行版的轻量化,仅内置了少数几个必要的扩展,且不同发行版略有差异。有关哪些平台内置了哪些扩展,记录在 核心扩展列表 中。

安装更多扩展

要使非内置的扩展在 DuckDB 中可用,需要进行两个步骤:

  1. 扩展安装 (Extension installation) 是下载扩展二进制文件并验证其元数据的过程。在安装过程中,DuckDB 会将下载的扩展和一些元数据存储在本地目录中。此后,DuckDB 可以在需要时从该目录加载扩展。这意味着安装只需进行一次。

  2. 扩展加载 (Extension loading) 是将二进制文件动态加载到 DuckDB 实例中的过程。DuckDB 将在本地扩展目录中搜索已安装的扩展,然后加载它以启用其功能。这意味着每次重启 DuckDB 时,所有使用的扩展都需要(重新)加载。

扩展的安装和加载受到一些 限制 的约束。

让 DuckDB 对可安装扩展执行 安装加载 步骤主要有两种方法:显式 (explicitly) 和通过 自动加载 (autoloading)

显式 INSTALLLOAD

在 DuckDB 中,扩展也可以显式安装和加载。非自动加载和可自动加载的扩展都可以通过这种方式安装。要显式安装和加载扩展,DuckDB 提供了专用的 SQL 语句 LOADINSTALL。例如,要安装并加载 spatial 扩展,请运行:

INSTALL spatial;
LOAD spatial;

使用这些语句,DuckDB 将确保 spatial 扩展已安装(如果已安装则忽略 INSTALL 语句),然后继续 LOAD 该 spatial 扩展(同样,如果已加载则忽略该语句)。

扩展仓库

可以选择提供一个扩展安装来源的仓库,方法是在 INSTALL / FORCE INSTALL 命令后附加 FROM repository。该仓库既可以是一个别名(例如 community),也可以是一个以单引号字符串提供的直接 URL。

安装/加载扩展后,可以使用 duckdb_extensions 函数 获取更多信息。

自动加载扩展

对于许多 DuckDB 核心扩展,无需显式加载和安装。DuckDB 包含一个自动加载机制,可以在查询中使用核心扩展时立即自动安装和加载它们。例如,当运行:

SELECT *
FROM 'https://raw.githubusercontent.com/duckdb/duckdb-web/main/data/weather.csv';

DuckDB 将自动安装并加载 httpfs 扩展。无需显式的 INSTALLLOAD 语句。

并非所有扩展都可以自动加载。这有多种原因:一些扩展会对正在运行的 DuckDB 实例进行多项更改,使得自动加载在技术上尚不可行。对于其他扩展,由于它们修改 DuckDB 行为的方式,更倾向于让用户在明确选择(opt-in)后才使用。

要查看哪些扩展可以自动加载,请检查 核心扩展列表

社区扩展

DuckDB 支持安装第三方 社区扩展。例如,你可以通过以下方式安装 avro 社区扩展

INSTALL avro FROM community;

社区扩展由社区成员贡献,但它们是在集中式仓库中构建、签名 和分发的。

更新扩展

虽然内置扩展由于其被构建到 DuckDB 二进制文件中的特性而绑定到 DuckDB 的某个发布版本,但可安装扩展可以且确实会接收更新。要确保所有已安装的扩展均为最新版本,请调用:

UPDATE EXTENSIONS;

有关扩展版本的更多详细信息,请参阅 扩展版本管理页面

开发扩展

核心扩展使用的 API 也可用于开发扩展。这允许用户扩展 DuckDB 的功能,使其最适合他们的领域。创建扩展的模板可在 extension-template 仓库 中找到。该模板还包含一些关于如何开始构建自己的扩展的文档。

使用扩展

请参阅 安装指南高级安装方法页面

本节页面

© 2025 DuckDB 基金会,阿姆斯特丹,荷兰
行为准则 商标使用指南