duckdb_fdw
DuckDB Foreign Data Wrapper
Overview
2450 | duckdb_fdw | duckdb_fdw | 1.1.2 | OLAP | MIT | C |
Attributes
Yes | No | Yes | No | Yes | Yes | No | - |
Packages
EL | PIGSTY | duckdb_fdw_$v* | 1.0.0 | libduckdb | 17 16 15 14 13 |
Debian | PIGSTY | postgresql-$v-duckdb-fdw | 1.0.0 | libduckdb | 17 16 15 14 13 |
Comments
conflict on libduckdb with pg_duckdb
Availability
PG17 | PG16 | PG15 | PG14 | PG13 | |
---|---|---|---|---|---|
el8.x86_64 | 1.1.2 | 1.1.2 | 1.1.2 | 1.1.2 | 1.1.2 |
el8.aarch64 | 1.1.2 | 1.1.2 | 1.1.2 | 1.1.2 | 1.1.2 |
el9.x86_64 | 1.1.2 | 1.1.2 | 1.1.2 | 1.1.2 | 1.1.2 |
el9.aarch64 | 1.1.2 | 1.1.2 | 1.1.2 | 1.1.2 | 1.1.2 |
d12.x86_64 | 1.1.2 | 1.1.2 | 1.1.2 | 1.1.2 | 1.1.2 |
d12.aarch64 | 1.1.2 | 1.1.2 | 1.1.2 | 1.1.2 | 1.1.2 |
u22.x86_64 | 1.1.2 | 1.1.2 | 1.1.2 | 1.1.2 | 1.1.2 |
u22.aarch64 | 1.1.2 | 1.1.2 | 1.1.2 | 1.1.2 | 1.1.2 |
u24.x86_64 | 1.1.2 | 1.1.2 | 1.1.2 | 1.1.2 | 1.1.2 |
u24.aarch64 | 1.1.2 | 1.1.2 | 1.1.2 | 1.1.2 | 1.1.2 |
CONTRIB
PGDG
PIGSTY
Download
To add the required PGDG / PIGSTY upstream repository, use:
pig repo add pgdg -u # add PGDG repo and update cache (leave existing repos)
pig repo add pigsty -u # add PIGSTY repo and update cache (leave existing repos)
pig repo add pgsql -u # add PGDG + Pigsty repo and update cache (leave existing repos)
pig repo set all -u # set repo to all = NODE + PGSQL + INFRA (remove existing repos)
./node.yml -t node_repo -e node_repo_modules=node,pgsql # -l <cluster>
Or download the latest packages directly:
Install
Install this extension with:
pig ext install duckdb_fdw; # install by extension name, for the current 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
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*;
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;
./pgsql.yml -t pg_ext -e '{"pg_extensions": ["duckdb_fdw"]}' # -l <cls>
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;