db2_fdw

提供对DB2的外部数据源包装器

概览

扩展包名版本分类许可证语言
db2_fdw18.1.1FDWPostgreSQLC
ID扩展名BinLibLoadCreateTrustReloc模式
8630db2_fdw-
相关扩展odbc_fdw mysql_fdw oracle_fdw tds_fdw wrappers multicorn jdbc_fdw postgres_fdw

版本

类型仓库版本PG 大版本包名依赖
EXTPGDG18.1.11817161514db2_fdw-
RPMPGDG18.1.11817161514db2_fdw_$v-
OS / PGPG18PG17PG16PG15PG14
el8.x86_64
el8.aarch64PGDG MISSPGDG MISSPGDG MISSPGDG MISSPGDG MISS
el9.x86_64
el9.aarch64PGDG MISSPGDG MISSPGDG MISSPGDG MISSPGDG MISS
el10.x86_64
el10.aarch64PGDG MISSPGDG MISSPGDG MISSPGDG MISSPGDG MISS
d12.x86_64PGDG MISSPGDG MISSPGDG MISSPGDG MISSPGDG MISS
d12.aarch64PGDG MISSPGDG MISSPGDG MISSPGDG MISSPGDG MISS
d13.x86_64PGDG MISSPGDG MISSPGDG MISSPGDG MISSPGDG MISS
d13.aarch64PGDG MISSPGDG MISSPGDG MISSPGDG MISSPGDG MISS
u22.x86_64PGDG MISSPGDG MISSPGDG MISSPGDG MISSPGDG MISS
u22.aarch64PGDG MISSPGDG MISSPGDG MISSPGDG MISSPGDG MISS
u24.x86_64PGDG MISSPGDG MISSPGDG MISSPGDG MISSPGDG MISS
u24.aarch64PGDG MISSPGDG MISSPGDG MISSPGDG MISSPGDG MISS

安装

您可以直接安装 db2_fdw 扩展包的预置二进制包,首先确保 PGDG 仓库已经添加并启用:

pig repo add pgdg -u          # 添加 PGDG 仓库并更新缓存

使用 pig 或者是 apt/yum/dnf 安装扩展:

pig install db2_fdw;          # 当前活跃 PG 版本安装
pig ext install -y db2_fdw -v 18  # PG 18
pig ext install -y db2_fdw -v 17  # PG 17
pig ext install -y db2_fdw -v 16  # PG 16
pig ext install -y db2_fdw -v 15  # PG 15
pig ext install -y db2_fdw -v 14  # PG 14
dnf install -y db2_fdw_18       # PG 18
dnf install -y db2_fdw_17       # PG 17
dnf install -y db2_fdw_16       # PG 16
dnf install -y db2_fdw_15       # PG 15
dnf install -y db2_fdw_14       # PG 14

创建扩展

CREATE EXTENSION db2_fdw;

用法

db2_fdw: 访问 DB2 的外部数据包装器

创建服务器

CREATE EXTENSION db2_fdw;

CREATE SERVER db2srv FOREIGN DATA WRAPPER db2_fdw
  OPTIONS (dbserver 'SAMPLE');

服务器选项: dbserver(必填,DB2 数据库连接字符串)。

创建用户映射

CREATE USER MAPPING FOR PUBLIC SERVER db2srv
  OPTIONS (user 'db2inst1', password 'secret');

userpassword 使用空字符串可启用外部认证。

创建外部表

CREATE FOREIGN TABLE employee (
  empno char(6) OPTIONS (key 'true'),
  firstname varchar(12),
  lastname varchar(15),
  salary numeric
)
SERVER db2srv
OPTIONS (schema 'DB2INST1', table 'EMPLOYEE');

表选项: table(必填,DB2 表名,区分大小写,通常大写)、schema(表所有者)、readonly(默认 false)、prefetch(每次往返获取行数,默认 200,范围 0-10240)、max_long(LONG 列最大长度,默认 32767)。

列选项: key(设为 true 标记主键列,UPDATE/DELETE 必需)。

导入外部模式

IMPORT FOREIGN SCHEMA "DB2INST1" FROM SERVER db2srv INTO public;

导入选项: casekeeplowersmart,默认 smart)、readonly

CRUD 操作

SELECT * FROM employee WHERE empno = '000010';
INSERT INTO employee (empno, firstname, lastname, salary) VALUES ('999999', 'John', 'Doe', 50000);
UPDATE employee SET salary = 55000 WHERE empno = '999999';
DELETE FROM employee WHERE empno = '999999';

数据类型映射

DB2 类型PostgreSQL 类型
CHARchar
VARCHARvarchar
CLOBtext
BLOBbytea
SMALLINT, INTEGER, BIGINTsmallint, integer, bigint
DOUBLEnumeric, float
DATEdate
TIMESTAMPtimestamp
TIMEtime

WHERE 条件和列投影会下推到 DB2 以最小化数据传输。


最后修改 2026-03-14: update extension metadata (953cbd0)