duckdb_fdw
DuckDB 外部数据源包装器
	Module:
Categories:
扩展总览
PIGSTY 第三方扩展: duckdb_fdw : DuckDB 外部数据源包装器
基本信息
- 扩展编号: 2450
 - 扩展名称: 
duckdb_fdw - 标准包名: 
duckdb_fdw - 扩展类目: 
OLAP - 开源协议: MIT
 - 官方网站: https://github.com/alitrack/duckdb_fdw
 - 编程语言: C
 - 其他标签: 
duckdb - 备注信息:
 
元数据
- 默认版本: 1.1.2
 - PG大版本: 
17,16,15,14,13 - 动态加载: 无需动态加载
 - 需要DDL:  需要执行 
CREATE EXTENSIONDDL - 可重定位: 无法安装至任意模式下
 - 信任程度: 未受信任,创建扩展需要超级用户权限
 - 所需模式: 无
 - 所需扩展: 无
 
软件包
- RPM仓库:PIGSTY
 - RPM包名:
duckdb_fdw_$v* - RPM版本:
1.0.0 - RPM依赖:
libduckdb - DEB仓库:PIGSTY
 - DEB包名:
postgresql-$v-duckdb-fdw - DEB版本:
1.0.0 - DEB依赖:
libduckdb 
最新版本
扩展安装
使用 pig 命令行工具安装 duckdb_fdw 扩展:
pig ext install duckdb_fdw
使用 Pigsty剧本 安装 duckdb_fdw 扩展:
./pgsql.yml -t pg_extension -e '{"pg_extensions": ["duckdb_fdw"]}' # -l <集群名>
从 YUM仓库 手工安装 duckdb_fdw RPM 包:
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仓库 手工安装 duckdb_fdw DEB 包:
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;
使用以下 SQL 命令在已经安装此扩展插件的 PG 集群上 启用 duckdb_fdw 扩展:
CREATE EXTENSION duckdb_fdw;
使用方法
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;