duckdb_fdw

DuckDB 外部数据源包装器

概览

扩展包名版本分类许可证语言
duckdb_fdw1.1.2OLAPMITC
ID扩展名BinLibLoadCreateTrustReloc模式
2470duckdb_fdw-
相关扩展pg_analytics pg_duckdb pg_mooncake pg_parquet wrappers citus_columnar columnar citus

conflict on libduckdb with pg_duckdb

版本

类型仓库版本PG 大版本包名依赖
EXTPIGSTY1.1.21817161514duckdb_fdw-
RPMPIGSTY1.1.21817161514duckdb_fdw_$vlibduckdb
DEBPIGSTY1.1.21817161514postgresql-$v-duckdb-fdwlibduckdb
OS / PGPG18PG17PG16PG15PG14
el8.x86_64PIGSTY MISS
el8.aarch64PIGSTY MISS
el9.x86_64PIGSTY MISS
el9.aarch64PIGSTY MISS
el10.x86_64PIGSTY MISSPIGSTY MISSPIGSTY MISSPIGSTY MISSPIGSTY MISS
el10.aarch64PIGSTY MISSPIGSTY MISSPIGSTY MISSPIGSTY MISSPIGSTY MISS
d12.x86_64PIGSTY MISS
d12.aarch64PIGSTY MISS
d13.x86_64PIGSTY MISSPIGSTY MISSPIGSTY MISSPIGSTY MISSPIGSTY MISS
d13.aarch64PIGSTY MISSPIGSTY MISSPIGSTY MISSPIGSTY MISSPIGSTY MISS
u22.x86_64PIGSTY MISS
PIGSTY 1.1.2
PIGSTY 1.1.2
PIGSTY 1.1.2
PIGSTY 1.1.2
u22.aarch64PIGSTY MISS
PIGSTY 1.1.2
PIGSTY 1.1.2
PIGSTY 1.1.2
PIGSTY 1.1.2
u24.x86_64PIGSTY MISS
PIGSTY 1.1.2
PIGSTY 1.1.2
PIGSTY 1.1.2
PIGSTY 1.1.2
u24.aarch64PIGSTY MISS
PIGSTY 1.1.2
PIGSTY 1.1.2
PIGSTY 1.1.2
PIGSTY 1.1.2

构建

您可以使用 pig build 命令构建 duckdb_fdw 扩展的 DEB 包:

pig build pkg duckdb_fdw         # 构建 DEB 包

安装

您可以直接安装 duckdb_fdw 扩展包的预置二进制包,首先确保 PGDGPIGSTY 仓库已经添加并启用:

pig repo add pgsql -u          # 添加仓库并更新缓存

使用 pig 或者是 apt/yum/dnf 安装扩展:

pig install duckdb_fdw;          # 当前活跃 PG 版本安装
pig ext install -y duckdb_fdw -v 17  # PG 17
pig ext install -y duckdb_fdw -v 16  # PG 16
pig ext install -y duckdb_fdw -v 15  # PG 15
pig ext install -y duckdb_fdw -v 14  # PG 14
dnf install -y duckdb_fdw_17       # PG 17
dnf install -y duckdb_fdw_16       # PG 16
dnf install -y duckdb_fdw_15       # PG 15
dnf install -y duckdb_fdw_14       # PG 14
apt install -y postgresql-17-duckdb-fdw   # PG 17
apt install -y postgresql-16-duckdb-fdw   # PG 16
apt install -y postgresql-15-duckdb-fdw   # PG 15
apt install -y postgresql-14-duckdb-fdw   # PG 14

创建扩展

CREATE EXTENSION duckdb_fdw;

用法

创建扩展

安装 duckdb_fdw yum 软件包后,可以在 PostgreSQL 数据库中创建该扩展:

-- 创建扩展
CREATE EXTENSION duckdb_fdw;

-- 创建 duckdb_fdw 外部服务器
CREATE SERVER duckdb_server FOREIGN DATA WRAPPER duckdb_fdw OPTIONS (database '/tmp/duck.db');

-- 创建用户映射 [可选]
-- GRANT USAGE ON FOREIGN SERVER duckdb_server TO PUBLIC;

SELECT duckdb_fdw_version();

-- 可以使用 `duckdb_execute` 执行 duckdb 命令,例如在 duckdb 中创建一张表:
-- 在 duckdb 中创建表
SELECT duckdb_execute('duckdb_server', 'CREATE TABLE t1 (a integer,b varchar);');

-- 创建映射到 duckdb 表的外部表
CREATE FOREIGN TABLE t1 (
    a integer,
    b text
) SERVER duckdb_server OPTIONS (
    table 't1'
);

-- 写入数据并读取
INSERT INTO t1 SELECT i AS a,i::text AS b FROM generate_series(1,10) i;
SELECT * FROM t1;

也可以从 duckdb 服务器导入外部模式,例如,先使用 duckdb 命令行工具创建一张表:

duckdb /tmp/duck.db

CREATE TABLE t1 (
  a integer,
  b text
);

INSERT INTO t1 VALUES (1, 'a'), (2 , 'b'), (3, 'c');
SELECT * FROM t1;

然后将该模式导入 PostgreSQL:

IMPORT FOREIGN SCHEMA public FROM SERVER duckdb_server INTO public;

其他资源


最后修改 2026-03-08: add extension catalog (baacba6)