duckdb_fdw

DuckDB 外部数据源包装器

概览

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

depend on pg_duckdb’s libduckdb, memory mode is break

版本

类型仓库版本PG 大版本包名依赖
EXTPIGSTY1.4.31817161514duckdb_fdw-
RPMPIGSTY1.4.31817161514duckdb_fdw_$vpg_duckdb_$v
DEBPIGSTY1.4.31817161514postgresql-$v-duckdb-fdwpostgresql-$v-pg-duckdb
OS / PGPG18PG17PG16PG15PG14
el8.x86_64
el8.aarch64
el9.x86_64
el9.aarch64
el10.x86_64
el10.aarch64
d12.x86_64
d12.aarch64
d13.x86_64
d13.aarch64
PIGSTY 1.4.3
PIGSTY 1.4.3
PIGSTY 1.4.3
PIGSTY 1.4.3
PIGSTY 1.4.3
u22.x86_64
PIGSTY 1.4.3
PIGSTY 1.4.3
PIGSTY 1.4.3
PIGSTY 1.4.3
PIGSTY 1.4.3
u22.aarch64
PIGSTY 1.4.3
PIGSTY 1.4.3
PIGSTY 1.4.3
PIGSTY 1.4.3
PIGSTY 1.4.3
u24.x86_64
PIGSTY 1.4.3
PIGSTY 1.4.3
PIGSTY 1.4.3
PIGSTY 1.4.3
PIGSTY 1.4.3
u24.aarch64
PIGSTY 1.4.3
PIGSTY 1.4.3
PIGSTY 1.4.3
PIGSTY 1.4.3
PIGSTY 1.4.3

构建

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

pig build pkg duckdb_fdw         # 构建 RPM / 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 18  # PG 18
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_18       # PG 18
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-18-duckdb-fdw   # PG 18
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-04-14: update extension catalog (fa7cf58)