duckdb_fdw
DuckDB 外部数据源包装器
仓库
alitrack/duckdb_fdw
https://github.com/alitrack/duckdb_fdw
源码
duckdb_fdw-1.4.3.tar.gz
duckdb_fdw-1.4.3.tar.gz
概览
| 扩展包名 | 版本 | 分类 | 许可证 | 语言 |
|---|---|---|---|---|
duckdb_fdw | 1.4.3 | OLAP | MIT | C |
| ID | 扩展名 | Bin | Lib | Load | Create | Trust | Reloc | 模式 |
|---|---|---|---|---|---|---|---|---|
| 2470 | duckdb_fdw | 否 | 是 | 否 | 是 | 否 | 是 | - |
| 相关扩展 | pg_analytics pg_duckdb pg_mooncake pg_parquet wrappers citus_columnar columnar citus |
|---|
depend on pg_duckdb’s libduckdb, memory mode is break
版本
| 类型 | 仓库 | 版本 | PG 大版本 | 包名 | 依赖 |
|---|---|---|---|---|---|
| EXT | PIGSTY | 1.4.3 | 1817161514 | duckdb_fdw | - |
| RPM | PIGSTY | 1.4.3 | 1817161514 | duckdb_fdw_$v | pg_duckdb_$v |
| DEB | PIGSTY | 1.4.3 | 1817161514 | postgresql-$v-duckdb-fdw | postgresql-$v-pg-duckdb |
构建
您可以使用 pig build 命令构建 duckdb_fdw 扩展的 RPM / DEB 包:
pig build pkg duckdb_fdw # 构建 RPM / DEB 包
安装
您可以直接安装 duckdb_fdw 扩展包的预置二进制包,首先确保 PGDG 和 PIGSTY 仓库已经添加并启用:
pig repo add pgsql -u # 添加仓库并更新缓存
使用 pig 或者是 apt/yum/dnf 安装扩展:
pig install duckdb_fdw; # 当前活跃 PG 版本安装
pig ext install -y duckdb_fdw -v 18 # PG 18
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_18 # PG 18
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-18-duckdb-fdw # PG 18
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 duckdb_fdw;
此扩展目前存在问题,与 pg_duckdb 和 pg_mooncake 存在冲突
用法
创建扩展
安装 duckdb_fdw yum 软件包后,可以在 PostgreSQL 数据库中创建该扩展:
-- 创建扩展
CREATE EXTENSION duckdb_fdw;
-- 创建 duckdb_fdw 外部服务器
CREATE SERVER duckdb_server FOREIGN DATA WRAPPER duckdb_fdw OPTIONS (database '/tmp/duck.db');
-- 创建用户映射 [可选]
-- GRANT USAGE ON FOREIGN SERVER duckdb_server TO PUBLIC;
SELECT duckdb_fdw_version();
-- 可以使用 `duckdb_execute` 执行 duckdb 命令,例如在 duckdb 中创建一张表:
-- 在 duckdb 中创建表
SELECT duckdb_execute('duckdb_server', 'CREATE TABLE t1 (a integer,b varchar);');
-- 创建映射到 duckdb 表的外部表
CREATE FOREIGN TABLE t1 (
a integer,
b text
) SERVER duckdb_server OPTIONS (
table 't1'
);
-- 写入数据并读取
INSERT INTO t1 SELECT i AS a,i::text AS b FROM generate_series(1,10) i;
SELECT * FROM t1;
也可以从 duckdb 服务器导入外部模式,例如,先使用 duckdb 命令行工具创建一张表:
duckdb /tmp/duck.db
CREATE TABLE t1 (
a integer,
b text
);
INSERT INTO t1 VALUES (1, 'a'), (2 , 'b'), (3, 'c');
SELECT * FROM t1;
然后将该模式导入 PostgreSQL:
IMPORT FOREIGN SCHEMA public FROM SERVER duckdb_server INTO public;