duckdb_fdw

duckdb_fdw

DuckDB Foreign Data Wrapper

Overview

IDExtensionPackageVersionCategoryLicenseLanguage
2450
duckdb_fdw
duckdb_fdw
1.1.2
OLAP
MIT
C
AttributeHas BinaryHas LibraryNeed LoadHas DDLRelocatableTrusted
--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

TypeRepoVersionPG Major AvailabilityPackage PatternDependencies
EL
PIGSTY
1.1.2
18
17
16
15
14
13
duckdb_fdw_$v*libduckdb
Debian
PIGSTY
1.1.2
18
17
16
15
14
13
postgresql-$v-duckdb-fdwlibduckdb
Linux / PGPG18PG17PG16PG15PG14PG13
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
PackageVersionOSORGSIZEFile URL
duckdb_fdw_171.1.2el8.x86_64pigsty83.2 KiBduckdb_fdw_17-1.1.2-1PIGSTY.el8.x86_64.rpm
duckdb_fdw_171.1.2el8.aarch64pigsty76.0 KiBduckdb_fdw_17-1.1.2-1PIGSTY.el8.aarch64.rpm
duckdb_fdw_171.1.2el9.x86_64pigsty80.6 KiBduckdb_fdw_17-1.1.2-1PIGSTY.el9.x86_64.rpm
duckdb_fdw_171.1.2el9.aarch64pigsty78.2 KiBduckdb_fdw_17-1.1.2-1PIGSTY.el9.aarch64.rpm
postgresql-17-duckdb-fdw1.1.2d12.x86_64pigsty256.1 KiBpostgresql-17-duckdb-fdw_1.1.2-1PIGSTY~bookworm_amd64.deb
postgresql-17-duckdb-fdw1.1.2d12.aarch64pigsty249.8 KiBpostgresql-17-duckdb-fdw_1.1.2-1PIGSTY~bookworm_arm64.deb
postgresql-17-duckdb-fdw1.1.2u22.x86_64pigsty266.4 KiBpostgresql-17-duckdb-fdw_1.1.2-1PIGSTY~jammy_amd64.deb
postgresql-17-duckdb-fdw1.1.2u22.aarch64pigsty262.6 KiBpostgresql-17-duckdb-fdw_1.1.2-1PIGSTY~jammy_arm64.deb
postgresql-17-duckdb-fdw1.1.2u24.x86_64pigsty217.8 KiBpostgresql-17-duckdb-fdw_1.1.2-1PIGSTY~noble_amd64.deb
postgresql-17-duckdb-fdw1.1.2u24.aarch64pigsty214.9 KiBpostgresql-17-duckdb-fdw_1.1.2-1PIGSTY~noble_arm64.deb
PackageVersionOSORGSIZEFile URL
duckdb_fdw_161.1.2el8.x86_64pigsty83.2 KiBduckdb_fdw_16-1.1.2-1PIGSTY.el8.x86_64.rpm
duckdb_fdw_161.1.2el8.aarch64pigsty76.0 KiBduckdb_fdw_16-1.1.2-1PIGSTY.el8.aarch64.rpm
duckdb_fdw_161.1.2el9.x86_64pigsty80.6 KiBduckdb_fdw_16-1.1.2-1PIGSTY.el9.x86_64.rpm
duckdb_fdw_161.1.2el9.aarch64pigsty78.2 KiBduckdb_fdw_16-1.1.2-1PIGSTY.el9.aarch64.rpm
postgresql-16-duckdb-fdw1.1.2d12.x86_64pigsty255.1 KiBpostgresql-16-duckdb-fdw_1.1.2-1PIGSTY~bookworm_amd64.deb
postgresql-16-duckdb-fdw1.1.2d12.aarch64pigsty248.8 KiBpostgresql-16-duckdb-fdw_1.1.2-1PIGSTY~bookworm_arm64.deb
postgresql-16-duckdb-fdw1.1.2u22.x86_64pigsty265.6 KiBpostgresql-16-duckdb-fdw_1.1.2-1PIGSTY~jammy_amd64.deb
postgresql-16-duckdb-fdw1.1.2u22.aarch64pigsty261.8 KiBpostgresql-16-duckdb-fdw_1.1.2-1PIGSTY~jammy_arm64.deb
postgresql-16-duckdb-fdw1.1.2u24.x86_64pigsty217.9 KiBpostgresql-16-duckdb-fdw_1.1.2-1PIGSTY~noble_amd64.deb
postgresql-16-duckdb-fdw1.1.2u24.aarch64pigsty214.9 KiBpostgresql-16-duckdb-fdw_1.1.2-1PIGSTY~noble_arm64.deb
PackageVersionOSORGSIZEFile URL
duckdb_fdw_151.1.2el8.x86_64pigsty86.0 KiBduckdb_fdw_15-1.1.2-1PIGSTY.el8.x86_64.rpm
duckdb_fdw_151.1.2el8.aarch64pigsty78.6 KiBduckdb_fdw_15-1.1.2-1PIGSTY.el8.aarch64.rpm
duckdb_fdw_151.1.2el9.x86_64pigsty84.5 KiBduckdb_fdw_15-1.1.2-1PIGSTY.el9.x86_64.rpm
duckdb_fdw_151.1.2el9.aarch64pigsty82.4 KiBduckdb_fdw_15-1.1.2-1PIGSTY.el9.aarch64.rpm
postgresql-15-duckdb-fdw1.1.2d12.x86_64pigsty258.9 KiBpostgresql-15-duckdb-fdw_1.1.2-1PIGSTY~bookworm_amd64.deb
postgresql-15-duckdb-fdw1.1.2d12.aarch64pigsty252.2 KiBpostgresql-15-duckdb-fdw_1.1.2-1PIGSTY~bookworm_arm64.deb
postgresql-15-duckdb-fdw1.1.2u22.x86_64pigsty277.6 KiBpostgresql-15-duckdb-fdw_1.1.2-1PIGSTY~jammy_amd64.deb
postgresql-15-duckdb-fdw1.1.2u22.aarch64pigsty273.5 KiBpostgresql-15-duckdb-fdw_1.1.2-1PIGSTY~jammy_arm64.deb
postgresql-15-duckdb-fdw1.1.2u24.x86_64pigsty229.1 KiBpostgresql-15-duckdb-fdw_1.1.2-1PIGSTY~noble_amd64.deb
postgresql-15-duckdb-fdw1.1.2u24.aarch64pigsty227.3 KiBpostgresql-15-duckdb-fdw_1.1.2-1PIGSTY~noble_arm64.deb
PackageVersionOSORGSIZEFile URL
duckdb_fdw_141.1.2el8.x86_64pigsty86.0 KiBduckdb_fdw_14-1.1.2-1PIGSTY.el8.x86_64.rpm
duckdb_fdw_141.1.2el8.aarch64pigsty78.6 KiBduckdb_fdw_14-1.1.2-1PIGSTY.el8.aarch64.rpm
duckdb_fdw_141.1.2el9.x86_64pigsty84.5 KiBduckdb_fdw_14-1.1.2-1PIGSTY.el9.x86_64.rpm
duckdb_fdw_141.1.2el9.aarch64pigsty82.3 KiBduckdb_fdw_14-1.1.2-1PIGSTY.el9.aarch64.rpm
postgresql-14-duckdb-fdw1.1.2d12.x86_64pigsty258.9 KiBpostgresql-14-duckdb-fdw_1.1.2-1PIGSTY~bookworm_amd64.deb
postgresql-14-duckdb-fdw1.1.2d12.aarch64pigsty252.2 KiBpostgresql-14-duckdb-fdw_1.1.2-1PIGSTY~bookworm_arm64.deb
postgresql-14-duckdb-fdw1.1.2u22.x86_64pigsty277.5 KiBpostgresql-14-duckdb-fdw_1.1.2-1PIGSTY~jammy_amd64.deb
postgresql-14-duckdb-fdw1.1.2u22.aarch64pigsty273.3 KiBpostgresql-14-duckdb-fdw_1.1.2-1PIGSTY~jammy_arm64.deb
postgresql-14-duckdb-fdw1.1.2u24.x86_64pigsty229.1 KiBpostgresql-14-duckdb-fdw_1.1.2-1PIGSTY~noble_amd64.deb
postgresql-14-duckdb-fdw1.1.2u24.aarch64pigsty227.3 KiBpostgresql-14-duckdb-fdw_1.1.2-1PIGSTY~noble_arm64.deb
PackageVersionOSORGSIZEFile URL
duckdb_fdw_131.1.2el8.x86_64pigsty83.2 KiBduckdb_fdw_13-1.1.2-1PIGSTY.el8.x86_64.rpm
duckdb_fdw_131.1.2el8.aarch64pigsty76.2 KiBduckdb_fdw_13-1.1.2-1PIGSTY.el8.aarch64.rpm
duckdb_fdw_131.1.2el9.x86_64pigsty81.7 KiBduckdb_fdw_13-1.1.2-1PIGSTY.el9.x86_64.rpm
duckdb_fdw_131.1.2el9.aarch64pigsty79.6 KiBduckdb_fdw_13-1.1.2-1PIGSTY.el9.aarch64.rpm
postgresql-13-duckdb-fdw1.1.2d12.x86_64pigsty249.1 KiBpostgresql-13-duckdb-fdw_1.1.2-1PIGSTY~bookworm_amd64.deb
postgresql-13-duckdb-fdw1.1.2d12.aarch64pigsty242.5 KiBpostgresql-13-duckdb-fdw_1.1.2-1PIGSTY~bookworm_arm64.deb
postgresql-13-duckdb-fdw1.1.2u22.x86_64pigsty266.7 KiBpostgresql-13-duckdb-fdw_1.1.2-1PIGSTY~jammy_amd64.deb
postgresql-13-duckdb-fdw1.1.2u22.aarch64pigsty262.8 KiBpostgresql-13-duckdb-fdw_1.1.2-1PIGSTY~jammy_arm64.deb
postgresql-13-duckdb-fdw1.1.2u24.x86_64pigsty222.5 KiBpostgresql-13-duckdb-fdw_1.1.2-1PIGSTY~noble_amd64.deb
postgresql-13-duckdb-fdw1.1.2u24.aarch64pigsty220.1 KiBpostgresql-13-duckdb-fdw_1.1.2-1PIGSTY~noble_arm64.deb

Source

pig build get duckdb_fdw; # get duckdb_fdw source code
pig build dep duckdb_fdw; # install build dependencies
pig build pkg duckdb_fdw; # build extension rpm or deb
pig build ext duckdb_fdw; # build extension rpms

Install

To add the required PGDG / PIGSTY upstream repository, use:

pig repo add pgsql -u   # add PGDG + Pigsty repo and update cache (leave existing repos)

Install this extension with:

pig ext install duckdb_fdw; # install by extension name, for the current active PG version
pig ext install duckdb_fdw; # install via package alias, for the active PG version
pig ext install duckdb_fdw -v 17;   # install for PG 17
pig ext install duckdb_fdw -v 16;   # install for PG 16
pig ext install duckdb_fdw -v 15;   # install for PG 15
pig ext install duckdb_fdw -v 14;   # install for PG 14
pig ext install duckdb_fdw -v 13;   # install for PG 13

Create this extension with:

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