⌘+k ctrl+k
1.3 (稳定版)
搜索快捷键 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();
扩展名称 已安装 描述
arrow Apache Arrow 和 DuckDB 之间的零拷贝数据集成
autocomplete 在 Shell 中添加自动补全支持

此列表将显示哪些扩展可用、哪些扩展已安装、版本以及安装位置等信息。此列表包含大多数(但并非所有)可用的核心扩展。有关完整列表,请参阅我们维护的核心扩展列表

内置扩展

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

SELECT *
FROM 'test.json';

为了使 DuckDB 分发包轻量化,只有少数必需的扩展是内置的,具体取决于不同的分发版本。哪个扩展在哪个平台上是内置的,已在核心扩展列表中说明。

安装更多扩展

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

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

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

扩展的安装和加载受一些限制

使 DuckDB 执行可安装扩展的安装加载步骤有两种主要方法:显式方式和通过自动加载

显式 INSTALLLOAD

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

INSTALL spatial;
LOAD spatial;

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

扩展存储库

可以选定要安装扩展的存储库,方法是将 FROM repository 附加到 INSTALL / FORCE INSTALL 命令。此存储库可以是别名,例如 community,也可以是作为单引号字符串提供的直接 URL。

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

自动加载扩展

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

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

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

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

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

社区扩展

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

INSTALL avro FROM community;

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

更新扩展

内置扩展由于其内置于 DuckDB 二进制文件的性质而与 DuckDB 版本绑定,而可安装的扩展可以且确实会接收更新。为确保所有当前安装的扩展都处于最新版本,请调用

UPDATE EXTENSIONS;

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

开发扩展

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

使用扩展

请参阅安装说明高级安装方法页面

本节页面