duckdb_fdw
DuckDB Foreign Data Wrapper
Repository
alitrack/duckdb_fdw
https://github.com/alitrack/duckdb_fdw
Source
duckdb_fdw-1.1.3.tar.gz
duckdb_fdw-1.1.3.tar.gz
Overview
| Package | Version | Category | License | Language |
|---|---|---|---|---|
duckdb_fdw | 1.1.2 | OLAP | MIT | C |
| ID | Extension | Bin | Lib | Load | Create | Trust | Reloc | Schema |
|---|---|---|---|---|---|---|---|---|
| 2470 | duckdb_fdw | No | Yes | No | Yes | No | Yes | - |
| Related | pg_analytics pg_duckdb pg_mooncake pg_parquet wrappers citus_columnar columnar citus |
|---|
conflict on libduckdb with pg_duckdb
Version
| Type | Repo | Version | PG Ver | Package | Deps |
|---|---|---|---|---|---|
| EXT | PIGSTY | 1.1.2 | 1817161514 | duckdb_fdw | - |
| RPM | PIGSTY | 1.1.2 | 1817161514 | duckdb_fdw_$v | libduckdb |
| DEB | PIGSTY | 1.1.2 | 1817161514 | postgresql-$v-duckdb-fdw | libduckdb |
| OS / PG | PG18 | PG17 | PG16 | PG15 | PG14 |
|---|---|---|---|---|---|
| el8.x86_64 | PIGSTY MISS | PIGSTY 1.1.2 el8.x86_64.pg17 : duckdb_fdw_17 duckdb_fdw_17-1.1.2-1PIGSTY.el8.x86_64.rpm
| PIGSTY 1.1.2 el8.x86_64.pg16 : duckdb_fdw_16 duckdb_fdw_16-1.1.2-1PIGSTY.el8.x86_64.rpm
| PIGSTY 1.1.2 el8.x86_64.pg15 : duckdb_fdw_15 duckdb_fdw_15-1.1.2-1PIGSTY.el8.x86_64.rpm
| PIGSTY 1.1.2 el8.x86_64.pg14 : duckdb_fdw_14 duckdb_fdw_14-1.1.2-1PIGSTY.el8.x86_64.rpm
|
| el8.aarch64 | PIGSTY MISS | PIGSTY 1.1.2 el8.aarch64.pg17 : duckdb_fdw_17 duckdb_fdw_17-1.1.2-1PIGSTY.el8.aarch64.rpm
| PIGSTY 1.1.2 el8.aarch64.pg16 : duckdb_fdw_16 duckdb_fdw_16-1.1.2-1PIGSTY.el8.aarch64.rpm
| PIGSTY 1.1.2 el8.aarch64.pg15 : duckdb_fdw_15 duckdb_fdw_15-1.1.2-1PIGSTY.el8.aarch64.rpm
| PIGSTY 1.1.2 el8.aarch64.pg14 : duckdb_fdw_14 duckdb_fdw_14-1.1.2-1PIGSTY.el8.aarch64.rpm
|
| el9.x86_64 | PIGSTY MISS | PIGSTY 1.1.2 el9.x86_64.pg17 : duckdb_fdw_17 duckdb_fdw_17-1.1.2-1PIGSTY.el9.x86_64.rpm
| PIGSTY 1.1.2 el9.x86_64.pg16 : duckdb_fdw_16 duckdb_fdw_16-1.1.2-1PIGSTY.el9.x86_64.rpm
| PIGSTY 1.1.2 el9.x86_64.pg15 : duckdb_fdw_15 duckdb_fdw_15-1.1.2-1PIGSTY.el9.x86_64.rpm
| PIGSTY 1.1.2 el9.x86_64.pg14 : duckdb_fdw_14 duckdb_fdw_14-1.1.2-1PIGSTY.el9.x86_64.rpm
|
| el9.aarch64 | PIGSTY MISS | PIGSTY 1.1.2 el9.aarch64.pg17 : duckdb_fdw_17 duckdb_fdw_17-1.1.2-1PIGSTY.el9.aarch64.rpm
| PIGSTY 1.1.2 el9.aarch64.pg16 : duckdb_fdw_16 duckdb_fdw_16-1.1.2-1PIGSTY.el9.aarch64.rpm
| PIGSTY 1.1.2 el9.aarch64.pg15 : duckdb_fdw_15 duckdb_fdw_15-1.1.2-1PIGSTY.el9.aarch64.rpm
| PIGSTY 1.1.2 el9.aarch64.pg14 : duckdb_fdw_14 duckdb_fdw_14-1.1.2-1PIGSTY.el9.aarch64.rpm
|
| el10.x86_64 | PIGSTY MISS | PIGSTY MISS | PIGSTY MISS | PIGSTY MISS | PIGSTY MISS |
| el10.aarch64 | PIGSTY MISS | PIGSTY MISS | PIGSTY MISS | PIGSTY MISS | PIGSTY MISS |
| d12.x86_64 | PIGSTY MISS | PIGSTY 1.1.2 d12.x86_64.pg17 : postgresql-17-duckdb-fdw postgresql-17-duckdb-fdw_1.1.2-1PIGSTY~bookworm_amd64.deb
| PIGSTY 1.1.2 d12.x86_64.pg16 : postgresql-16-duckdb-fdw postgresql-16-duckdb-fdw_1.1.2-1PIGSTY~bookworm_amd64.deb
| PIGSTY 1.1.2 d12.x86_64.pg15 : postgresql-15-duckdb-fdw postgresql-15-duckdb-fdw_1.1.2-1PIGSTY~bookworm_amd64.deb
| PIGSTY 1.1.2 d12.x86_64.pg14 : postgresql-14-duckdb-fdw postgresql-14-duckdb-fdw_1.1.2-1PIGSTY~bookworm_amd64.deb
|
| d12.aarch64 | PIGSTY MISS | PIGSTY 1.1.2 d12.aarch64.pg17 : postgresql-17-duckdb-fdw postgresql-17-duckdb-fdw_1.1.2-1PIGSTY~bookworm_arm64.deb
| PIGSTY 1.1.2 d12.aarch64.pg16 : postgresql-16-duckdb-fdw postgresql-16-duckdb-fdw_1.1.2-1PIGSTY~bookworm_arm64.deb
| PIGSTY 1.1.2 d12.aarch64.pg15 : postgresql-15-duckdb-fdw postgresql-15-duckdb-fdw_1.1.2-1PIGSTY~bookworm_arm64.deb
| PIGSTY 1.1.2 d12.aarch64.pg14 : postgresql-14-duckdb-fdw postgresql-14-duckdb-fdw_1.1.2-1PIGSTY~bookworm_arm64.deb
|
| d13.x86_64 | PIGSTY MISS | PIGSTY MISS | PIGSTY MISS | PIGSTY MISS | PIGSTY MISS |
| d13.aarch64 | PIGSTY MISS | PIGSTY MISS | PIGSTY MISS | PIGSTY MISS | PIGSTY MISS |
| u22.x86_64 | PIGSTY MISS | PIGSTY 1.1.2 u22.x86_64.pg17 : postgresql-17-duckdb-fdw postgresql-17-duckdb-fdw_1.1.2-1PIGSTY~jammy_amd64.deb
| PIGSTY 1.1.2 u22.x86_64.pg16 : postgresql-16-duckdb-fdw postgresql-16-duckdb-fdw_1.1.2-1PIGSTY~jammy_amd64.deb
| PIGSTY 1.1.2 u22.x86_64.pg15 : postgresql-15-duckdb-fdw postgresql-15-duckdb-fdw_1.1.2-1PIGSTY~jammy_amd64.deb
| PIGSTY 1.1.2 u22.x86_64.pg14 : postgresql-14-duckdb-fdw postgresql-14-duckdb-fdw_1.1.2-1PIGSTY~jammy_amd64.deb
|
| u22.aarch64 | PIGSTY MISS | PIGSTY 1.1.2 u22.aarch64.pg17 : postgresql-17-duckdb-fdw postgresql-17-duckdb-fdw_1.1.2-1PIGSTY~jammy_arm64.deb
| PIGSTY 1.1.2 u22.aarch64.pg16 : postgresql-16-duckdb-fdw postgresql-16-duckdb-fdw_1.1.2-1PIGSTY~jammy_arm64.deb
| PIGSTY 1.1.2 u22.aarch64.pg15 : postgresql-15-duckdb-fdw postgresql-15-duckdb-fdw_1.1.2-1PIGSTY~jammy_arm64.deb
| PIGSTY 1.1.2 u22.aarch64.pg14 : postgresql-14-duckdb-fdw postgresql-14-duckdb-fdw_1.1.2-1PIGSTY~jammy_arm64.deb
|
| u24.x86_64 | PIGSTY MISS | PIGSTY 1.1.2 u24.x86_64.pg17 : postgresql-17-duckdb-fdw postgresql-17-duckdb-fdw_1.1.2-1PIGSTY~noble_amd64.deb
| PIGSTY 1.1.2 u24.x86_64.pg16 : postgresql-16-duckdb-fdw postgresql-16-duckdb-fdw_1.1.2-1PIGSTY~noble_amd64.deb
| PIGSTY 1.1.2 u24.x86_64.pg15 : postgresql-15-duckdb-fdw postgresql-15-duckdb-fdw_1.1.2-1PIGSTY~noble_amd64.deb
| PIGSTY 1.1.2 u24.x86_64.pg14 : postgresql-14-duckdb-fdw postgresql-14-duckdb-fdw_1.1.2-1PIGSTY~noble_amd64.deb
|
| u24.aarch64 | PIGSTY MISS | PIGSTY 1.1.2 u24.aarch64.pg17 : postgresql-17-duckdb-fdw postgresql-17-duckdb-fdw_1.1.2-1PIGSTY~noble_arm64.deb
| PIGSTY 1.1.2 u24.aarch64.pg16 : postgresql-16-duckdb-fdw postgresql-16-duckdb-fdw_1.1.2-1PIGSTY~noble_arm64.deb
| PIGSTY 1.1.2 u24.aarch64.pg15 : postgresql-15-duckdb-fdw postgresql-15-duckdb-fdw_1.1.2-1PIGSTY~noble_arm64.deb
| PIGSTY 1.1.2 u24.aarch64.pg14 : postgresql-14-duckdb-fdw postgresql-14-duckdb-fdw_1.1.2-1PIGSTY~noble_arm64.deb
|
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;
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
Feedback
Was this page helpful?
Thanks for the feedback! Please let us know how we can improve.
Sorry to hear that. Please let us know how we can improve.