duckdb_fdw

duckdb_fdw

duckdb_fdw : DuckDB Foreign Data Wrapper

Overview

ID Extension Package Version Category License Language
2450
duckdb_fdw
duckdb_fdw
1.1.2
OLAP
MIT
C
Attribute Has Binary Has Library Need Load Has DDL Relocatable Trusted
--s-d-r
No
Yes
No
Yes
yes
no
Relationships
See Also
pg_analytics
pg_duckdb
pg_mooncake
pg_parquet
wrappers
citus_columnar
columnar
citus

conflict on libduckdb with pg_duckdb

Packages

Type Repo Version PG Major Compatibility Package Pattern Dependencies
EXT
PIGSTY
1.1.2
18
17
16
15
14
13
duckdb_fdw -
RPM
PIGSTY
1.1.2
18
17
16
15
14
13
duckdb_fdw_$v* libduckdb
DEB
PIGSTY
1.1.2
18
17
16
15
14
13
postgresql-$v-duckdb-fdw libduckdb
Linux / PG PG18 PG17 PG16 PG15 PG14 PG13
el8.x86_64
MISS
PIGSTY 1.1.2
PIGSTY 1.1.2
PIGSTY 1.1.2
PIGSTY 1.1.2
PIGSTY 1.1.2
el8.aarch64
MISS
PIGSTY 1.1.2
PIGSTY 1.1.2
PIGSTY 1.1.2
PIGSTY 1.1.2
PIGSTY 1.1.2
el9.x86_64
MISS
PIGSTY 1.1.2
PIGSTY 1.1.2
PIGSTY 1.1.2
PIGSTY 1.1.2
PIGSTY 1.1.2
el9.aarch64
MISS
PIGSTY 1.1.2
PIGSTY 1.1.2
PIGSTY 1.1.2
PIGSTY 1.1.2
PIGSTY 1.1.2
el10.x86_64
MISS
MISS
MISS
MISS
MISS
MISS
el10.aarch64
MISS
MISS
MISS
MISS
MISS
MISS
d12.x86_64
MISS
PIGSTY 1.1.2
PIGSTY 1.1.2
PIGSTY 1.1.2
PIGSTY 1.1.2
PIGSTY 1.1.2
d12.aarch64
MISS
PIGSTY 1.1.2
PIGSTY 1.1.2
PIGSTY 1.1.2
PIGSTY 1.1.2
PIGSTY 1.1.2
d13.x86_64
MISS
MISS
MISS
MISS
MISS
MISS
d13.aarch64
MISS
MISS
MISS
MISS
MISS
MISS
u22.x86_64
MISS
PIGSTY 1.1.2
PIGSTY 1.1.2
PIGSTY 1.1.2
PIGSTY 1.1.2
PIGSTY 1.1.2
u22.aarch64
MISS
PIGSTY 1.1.2
PIGSTY 1.1.2
PIGSTY 1.1.2
PIGSTY 1.1.2
PIGSTY 1.1.2
u24.x86_64
MISS
PIGSTY 1.1.2
PIGSTY 1.1.2
PIGSTY 1.1.2
PIGSTY 1.1.2
PIGSTY 1.1.2
u24.aarch64
MISS
PIGSTY 1.1.2
PIGSTY 1.1.2
PIGSTY 1.1.2
PIGSTY 1.1.2
PIGSTY 1.1.2
Package Version OS ORG SIZE File URL
duckdb_fdw_17 1.1.2 el8.x86_64 pigsty 83.2 KiB duckdb_fdw_17-1.1.2-1PIGSTY.el8.x86_64.rpm
duckdb_fdw_17 1.1.2 el8.aarch64 pigsty 76.0 KiB duckdb_fdw_17-1.1.2-1PIGSTY.el8.aarch64.rpm
duckdb_fdw_17 1.1.2 el9.x86_64 pigsty 80.6 KiB duckdb_fdw_17-1.1.2-1PIGSTY.el9.x86_64.rpm
duckdb_fdw_17 1.1.2 el9.aarch64 pigsty 78.2 KiB duckdb_fdw_17-1.1.2-1PIGSTY.el9.aarch64.rpm
postgresql-17-duckdb-fdw 1.1.2 d12.x86_64 pigsty 256.1 KiB postgresql-17-duckdb-fdw_1.1.2-1PIGSTY~bookworm_amd64.deb
postgresql-17-duckdb-fdw 1.1.2 d12.aarch64 pigsty 249.8 KiB postgresql-17-duckdb-fdw_1.1.2-1PIGSTY~bookworm_arm64.deb
postgresql-17-duckdb-fdw 1.1.2 u22.x86_64 pigsty 266.4 KiB postgresql-17-duckdb-fdw_1.1.2-1PIGSTY~jammy_amd64.deb
postgresql-17-duckdb-fdw 1.1.2 u22.aarch64 pigsty 262.6 KiB postgresql-17-duckdb-fdw_1.1.2-1PIGSTY~jammy_arm64.deb
postgresql-17-duckdb-fdw 1.1.2 u24.x86_64 pigsty 217.8 KiB postgresql-17-duckdb-fdw_1.1.2-1PIGSTY~noble_amd64.deb
postgresql-17-duckdb-fdw 1.1.2 u24.aarch64 pigsty 214.9 KiB postgresql-17-duckdb-fdw_1.1.2-1PIGSTY~noble_arm64.deb
Package Version OS ORG SIZE File URL
duckdb_fdw_16 1.1.2 el8.x86_64 pigsty 83.2 KiB duckdb_fdw_16-1.1.2-1PIGSTY.el8.x86_64.rpm
duckdb_fdw_16 1.1.2 el8.aarch64 pigsty 76.0 KiB duckdb_fdw_16-1.1.2-1PIGSTY.el8.aarch64.rpm
duckdb_fdw_16 1.1.2 el9.x86_64 pigsty 80.6 KiB duckdb_fdw_16-1.1.2-1PIGSTY.el9.x86_64.rpm
duckdb_fdw_16 1.1.2 el9.aarch64 pigsty 78.2 KiB duckdb_fdw_16-1.1.2-1PIGSTY.el9.aarch64.rpm
postgresql-16-duckdb-fdw 1.1.2 d12.x86_64 pigsty 255.1 KiB postgresql-16-duckdb-fdw_1.1.2-1PIGSTY~bookworm_amd64.deb
postgresql-16-duckdb-fdw 1.1.2 d12.aarch64 pigsty 248.8 KiB postgresql-16-duckdb-fdw_1.1.2-1PIGSTY~bookworm_arm64.deb
postgresql-16-duckdb-fdw 1.1.2 u22.x86_64 pigsty 265.6 KiB postgresql-16-duckdb-fdw_1.1.2-1PIGSTY~jammy_amd64.deb
postgresql-16-duckdb-fdw 1.1.2 u22.aarch64 pigsty 261.8 KiB postgresql-16-duckdb-fdw_1.1.2-1PIGSTY~jammy_arm64.deb
postgresql-16-duckdb-fdw 1.1.2 u24.x86_64 pigsty 217.9 KiB postgresql-16-duckdb-fdw_1.1.2-1PIGSTY~noble_amd64.deb
postgresql-16-duckdb-fdw 1.1.2 u24.aarch64 pigsty 214.9 KiB postgresql-16-duckdb-fdw_1.1.2-1PIGSTY~noble_arm64.deb
Package Version OS ORG SIZE File URL
duckdb_fdw_15 1.1.2 el8.x86_64 pigsty 86.0 KiB duckdb_fdw_15-1.1.2-1PIGSTY.el8.x86_64.rpm
duckdb_fdw_15 1.1.2 el8.aarch64 pigsty 78.6 KiB duckdb_fdw_15-1.1.2-1PIGSTY.el8.aarch64.rpm
duckdb_fdw_15 1.1.2 el9.x86_64 pigsty 84.5 KiB duckdb_fdw_15-1.1.2-1PIGSTY.el9.x86_64.rpm
duckdb_fdw_15 1.1.2 el9.aarch64 pigsty 82.4 KiB duckdb_fdw_15-1.1.2-1PIGSTY.el9.aarch64.rpm
postgresql-15-duckdb-fdw 1.1.2 d12.x86_64 pigsty 258.9 KiB postgresql-15-duckdb-fdw_1.1.2-1PIGSTY~bookworm_amd64.deb
postgresql-15-duckdb-fdw 1.1.2 d12.aarch64 pigsty 252.2 KiB postgresql-15-duckdb-fdw_1.1.2-1PIGSTY~bookworm_arm64.deb
postgresql-15-duckdb-fdw 1.1.2 u22.x86_64 pigsty 277.6 KiB postgresql-15-duckdb-fdw_1.1.2-1PIGSTY~jammy_amd64.deb
postgresql-15-duckdb-fdw 1.1.2 u22.aarch64 pigsty 273.5 KiB postgresql-15-duckdb-fdw_1.1.2-1PIGSTY~jammy_arm64.deb
postgresql-15-duckdb-fdw 1.1.2 u24.x86_64 pigsty 229.1 KiB postgresql-15-duckdb-fdw_1.1.2-1PIGSTY~noble_amd64.deb
postgresql-15-duckdb-fdw 1.1.2 u24.aarch64 pigsty 227.3 KiB postgresql-15-duckdb-fdw_1.1.2-1PIGSTY~noble_arm64.deb
Package Version OS ORG SIZE File URL
duckdb_fdw_14 1.1.2 el8.x86_64 pigsty 86.0 KiB duckdb_fdw_14-1.1.2-1PIGSTY.el8.x86_64.rpm
duckdb_fdw_14 1.1.2 el8.aarch64 pigsty 78.6 KiB duckdb_fdw_14-1.1.2-1PIGSTY.el8.aarch64.rpm
duckdb_fdw_14 1.1.2 el9.x86_64 pigsty 84.5 KiB duckdb_fdw_14-1.1.2-1PIGSTY.el9.x86_64.rpm
duckdb_fdw_14 1.1.2 el9.aarch64 pigsty 82.3 KiB duckdb_fdw_14-1.1.2-1PIGSTY.el9.aarch64.rpm
postgresql-14-duckdb-fdw 1.1.2 d12.x86_64 pigsty 258.9 KiB postgresql-14-duckdb-fdw_1.1.2-1PIGSTY~bookworm_amd64.deb
postgresql-14-duckdb-fdw 1.1.2 d12.aarch64 pigsty 252.2 KiB postgresql-14-duckdb-fdw_1.1.2-1PIGSTY~bookworm_arm64.deb
postgresql-14-duckdb-fdw 1.1.2 u22.x86_64 pigsty 277.5 KiB postgresql-14-duckdb-fdw_1.1.2-1PIGSTY~jammy_amd64.deb
postgresql-14-duckdb-fdw 1.1.2 u22.aarch64 pigsty 273.3 KiB postgresql-14-duckdb-fdw_1.1.2-1PIGSTY~jammy_arm64.deb
postgresql-14-duckdb-fdw 1.1.2 u24.x86_64 pigsty 229.1 KiB postgresql-14-duckdb-fdw_1.1.2-1PIGSTY~noble_amd64.deb
postgresql-14-duckdb-fdw 1.1.2 u24.aarch64 pigsty 227.3 KiB postgresql-14-duckdb-fdw_1.1.2-1PIGSTY~noble_arm64.deb
Package Version OS ORG SIZE File URL
duckdb_fdw_13 1.1.2 el8.x86_64 pigsty 83.2 KiB duckdb_fdw_13-1.1.2-1PIGSTY.el8.x86_64.rpm
duckdb_fdw_13 1.1.2 el8.aarch64 pigsty 76.2 KiB duckdb_fdw_13-1.1.2-1PIGSTY.el8.aarch64.rpm
duckdb_fdw_13 1.1.2 el9.x86_64 pigsty 81.7 KiB duckdb_fdw_13-1.1.2-1PIGSTY.el9.x86_64.rpm
duckdb_fdw_13 1.1.2 el9.aarch64 pigsty 79.6 KiB duckdb_fdw_13-1.1.2-1PIGSTY.el9.aarch64.rpm
postgresql-13-duckdb-fdw 1.1.2 d12.x86_64 pigsty 249.1 KiB postgresql-13-duckdb-fdw_1.1.2-1PIGSTY~bookworm_amd64.deb
postgresql-13-duckdb-fdw 1.1.2 d12.aarch64 pigsty 242.5 KiB postgresql-13-duckdb-fdw_1.1.2-1PIGSTY~bookworm_arm64.deb
postgresql-13-duckdb-fdw 1.1.2 u22.x86_64 pigsty 266.7 KiB postgresql-13-duckdb-fdw_1.1.2-1PIGSTY~jammy_amd64.deb
postgresql-13-duckdb-fdw 1.1.2 u22.aarch64 pigsty 262.8 KiB postgresql-13-duckdb-fdw_1.1.2-1PIGSTY~jammy_arm64.deb
postgresql-13-duckdb-fdw 1.1.2 u24.x86_64 pigsty 222.5 KiB postgresql-13-duckdb-fdw_1.1.2-1PIGSTY~noble_amd64.deb
postgresql-13-duckdb-fdw 1.1.2 u24.aarch64 pigsty 220.1 KiB postgresql-13-duckdb-fdw_1.1.2-1PIGSTY~noble_arm64.deb

Source

pig build pkg duckdb_fdw;		# build rpm / deb with pig

Install

Make sure PGDG and PIGSTY repo available:

pig repo add pgdg pigsty -u   # add both repo and update cache

Install this extension with pig:

pig install duckdb_fdw;		# install via package name, for the active PG version

pig install duckdb_fdw -v 17;   # install for PG 17
pig install duckdb_fdw -v 16;   # install for PG 16
pig install duckdb_fdw -v 15;   # install for PG 15
pig install duckdb_fdw -v 14;   # install for PG 14
pig install duckdb_fdw -v 13;   # install for PG 13

Create this extension with:

CREATE EXTENSION duckdb_fdw;

This extension is currently broken and conflict with pg_duckdb & pg_mooncake

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 updated on