duckdb_fdw

DuckDB Foreign Data Wrapper

Overview

PIGSTY 3rd Party Extension: duckdb_fdw : DuckDB Foreign Data Wrapper

Information

Metadata

  • Latest Version: 1.1.2
  • Postgres Support: 17,16,15,14,13
  • Need Load: Shared library do not need explicit loading
  • Need DDL: Need CREATE EXTENSION DDL
  • Relocatable: Can not install to arbitrary schema
  • Trusted: Untrusted, Require Superuser to Create
  • Schemas: N/A
  • Requires: N/A

RPM / DEB

  • RPM Repo: PIGSTY
  • RPM Name: duckdb_fdw_$v*
  • RPM Ver : 1.0.0
  • RPM Deps: libduckdb
  • DEB Repo: PIGSTY
  • DEB Name: postgresql-$v-duckdb-fdw
  • DEB Ver : 1.0.0
  • DEB Deps: libduckdb

Availability

OS Arch PG17 PG16 PG15 PG14 PG13
el8 x86_64 duckdb_fdw_17
PIGSTY 1.1.2
duckdb_fdw_16
PIGSTY 1.1.2
duckdb_fdw_15
PIGSTY 1.1.2
duckdb_fdw_14
PIGSTY 1.1.2
duckdb_fdw_13
PIGSTY 1.1.2
el8 aarch64 duckdb_fdw_17
PIGSTY 1.1.2
duckdb_fdw_16
PIGSTY 1.1.2
duckdb_fdw_15
PIGSTY 1.1.2
duckdb_fdw_14
PIGSTY 1.1.2
duckdb_fdw_13
PIGSTY 1.1.2
el9 x86_64 duckdb_fdw_17
PIGSTY 1.1.2
duckdb_fdw_16
PIGSTY 1.1.2
duckdb_fdw_15
PIGSTY 1.1.2
duckdb_fdw_14
PIGSTY 1.1.2
duckdb_fdw_13
PIGSTY 1.1.2
el9 aarch64 duckdb_fdw_17
PIGSTY 1.1.2
duckdb_fdw_16
PIGSTY 1.1.2
duckdb_fdw_15
PIGSTY 1.1.2
duckdb_fdw_14
PIGSTY 1.1.2
duckdb_fdw_13
PIGSTY 1.1.2
d12 x86_64 postgresql-17-duckdb-fdw
PIGSTY 1.1.2
postgresql-16-duckdb-fdw
PIGSTY 1.1.2
postgresql-15-duckdb-fdw
PIGSTY 1.1.2
postgresql-14-duckdb-fdw
PIGSTY 1.1.2
postgresql-13-duckdb-fdw
PIGSTY 1.1.2
d12 aarch64 postgresql-17-duckdb-fdw
PIGSTY 1.1.2
postgresql-16-duckdb-fdw
PIGSTY 1.1.2
postgresql-15-duckdb-fdw
PIGSTY 1.1.2
postgresql-14-duckdb-fdw
PIGSTY 1.1.2
postgresql-13-duckdb-fdw
PIGSTY 1.1.2
u22 x86_64 postgresql-17-duckdb-fdw
PIGSTY 1.1.2
postgresql-16-duckdb-fdw
PIGSTY 1.1.2
postgresql-15-duckdb-fdw
PIGSTY 1.1.2
postgresql-14-duckdb-fdw
PIGSTY 1.1.2
postgresql-13-duckdb-fdw
PIGSTY 1.1.2
u22 aarch64 postgresql-17-duckdb-fdw
PIGSTY 1.1.2
postgresql-16-duckdb-fdw
PIGSTY 1.1.2
postgresql-15-duckdb-fdw
PIGSTY 1.1.2
postgresql-14-duckdb-fdw
PIGSTY 1.1.2
postgresql-13-duckdb-fdw
PIGSTY 1.1.2
u24 x86_64 postgresql-17-duckdb-fdw
PIGSTY 1.1.2
postgresql-16-duckdb-fdw
PIGSTY 1.1.2
postgresql-15-duckdb-fdw
PIGSTY 1.1.2
postgresql-14-duckdb-fdw
PIGSTY 1.1.2
postgresql-13-duckdb-fdw
PIGSTY 1.1.2
u24 aarch64 postgresql-17-duckdb-fdw
PIGSTY 1.1.2
postgresql-16-duckdb-fdw
PIGSTY 1.1.2
postgresql-15-duckdb-fdw
PIGSTY 1.1.2
postgresql-14-duckdb-fdw
PIGSTY 1.1.2
postgresql-13-duckdb-fdw
PIGSTY 1.1.2

Installation

Install duckdb_fdw via the pig CLI tool:

pig ext install duckdb_fdw

Install duckdb_fdw via Pigsty playbook:

./pgsql.yml -t pg_extension -e '{"pg_extensions": ["duckdb_fdw"]}' # -l <cls>

Install duckdb_fdw RPM from YUM repo directly:

dnf install duckdb_fdw_17*; dnf install duckdb_fdw_16*; dnf install duckdb_fdw_15*; dnf install duckdb_fdw_14*; dnf install duckdb_fdw_13*;

Install duckdb_fdw DEB from APT repo directly:

apt install postgresql-17-duckdb-fdw; apt install postgresql-16-duckdb-fdw; apt install postgresql-15-duckdb-fdw; apt install postgresql-14-duckdb-fdw; apt install postgresql-13-duckdb-fdw;

Create duckdb_fdw extension on PostgreSQL cluster:

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 2025-03-21: use global url (cc35107)