duckdb_fdw

DuckDB Foreign Data Wrapper

Overview

PackageVersionCategoryLicenseLanguage
duckdb_fdw1.1.2OLAPMITC
IDExtensionBinLibLoadCreateTrustRelocSchema
2470duckdb_fdwNoYesNoYesNoYes-
Relatedpg_analytics pg_duckdb pg_mooncake pg_parquet wrappers citus_columnar columnar citus

conflict on libduckdb with pg_duckdb

Version

TypeRepoVersionPG VerPackageDeps
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

Build

You can build the DEB packages for duckdb_fdw using pig build:

pig build pkg duckdb_fdw         # build DEB packages

Install

You can install duckdb_fdw directly. First, make sure the PGDG and PIGSTY repositories are added and enabled:

pig repo add pgsql -u          # Add repo and update cache

Install the extension using pig or apt/yum/dnf:

pig install duckdb_fdw;          # Install for current active PG version
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:

CREATE EXTENSION duckdb_fdw;

Usage

Create Extension

After install the duckdb_fdw yum package, you can create the extension inside PostgreSQL database:

-- create extension
CREATE EXTENSION duckdb_fdw;

-- create duckdb_fdw server
CREATE SERVER duckdb_server FOREIGN DATA WRAPPER duckdb_fdw OPTIONS (database '/tmp/duck.db');

-- create user mapping [OPTIONAL]
-- GRANT USAGE ON FOREIGN SERVER duckdb_server TO PUBLIC;

SELECT duckdb_fdw_version();

-- You can execute duckdb command with `duckdb_execute`, for example, to create a table inside duckdb:
-- create a table in duckdb
SELECT duckdb_execute('duckdb_server', 'CREATE TABLE t1 (a integer,b varchar);');

-- create duckdb foreign table mapping that duckdb table
CREATE FOREIGN TABLE t1 (
    a integer,
    b text
) SERVER duckdb_server OPTIONS (
    table 't1'
);

-- write some data and read it back
INSERT INTO t1 SELECT i AS a,i::text AS b FROM generate_series(1,10) i;
SELECT * FROM t1;

You can also import foreign schema from duckdb server, for example, create a table with duckdb cli:

duckdb /tmp/duck.db

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

Then import the schema into PostgreSQL:

IMPORT FOREIGN SCHEMA public FROM SERVER duckdb_server INTO public;

Other Resource


Last Modified 2026-03-12: add pg extension catalog (95749bf)