跳转到主要内容

db2_fdw

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

概览

扩展包名版本分类许可证语言
db2_fdw18.2.0FDWPostgreSQLC
ID扩展名BinLibLoadCreateTrustReloc模式
8630db2_fdw否是否是否否-

Latest PGDG RPM/catalog version is 18.2.0; no DEB package is available.

版本

类型仓库版本PG 大版本包名依赖
EXTPGDG18.2.01817161514db2_fdw-
RPMPGDG18.2.01817161514db2_fdw_$v-
OS / PGPG18PG17PG16PG15PG14
el8.x86_64
el8.aarch64N/AN/AN/AN/AN/A
el9.x86_64
el9.aarch64N/AN/AN/AN/AN/A
el10.x86_64
el10.aarch64N/AN/AN/AN/AN/A
d12.x86_64N/AN/AN/AN/AN/A
d12.aarch64N/AN/AN/AN/AN/A
d13.x86_64N/AN/AN/AN/AN/A
d13.aarch64N/AN/AN/AN/AN/A
u22.x86_64N/AN/AN/AN/AN/A
u22.aarch64N/AN/AN/AN/AN/A
u24.x86_64N/AN/AN/AN/AN/A
u24.aarch64N/AN/AN/AN/AN/A
u26.x86_64N/AN/AN/AN/AN/A
u26.aarch64N/AN/AN/AN/AN/A

安装

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

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

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

安装
pig install db2_fdw;          # 当前活跃 PG 版本安装
pig
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
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 18.2.0 通过 PostgreSQL 外部表查询和修改 IBM Db2 表,能够下推支持的过滤条件以及所需列。上游要求 PostgreSQL 10.1 或更高版本,以及与 PostgreSQL 架构相同的 IBM Db2 客户端 11.1 或更高版本。服务进程必须能够加载该客户端并访问指定数据库;安装扩展并不会提供外部客户端或 Db2 服务。

连接并导入表

示例假设 Db2 客户端可以连接已编目的 SAMPLE 数据库,且存在 DB2INST1.EMPLOYEE 表。由超级用户安装扩展,然后创建服务和指定角色的用户映射;应使用真实 Db2 凭据替换示例密码:

CREATE EXTENSION db2_fdw;
CREATE SERVER db2srv FOREIGN DATA WRAPPER db2_fdw
  OPTIONS (dbserver 'SAMPLE');
CREATE USER MAPPING FOR CURRENT_USER SERVER db2srv
  OPTIONS (user 'db2inst1', password 'change-me');
CREATE SCHEMA db2_remote;
IMPORT FOREIGN SCHEMA "DB2INST1" LIMIT TO ("EMPLOYEE")
  FROM SERVER db2srv INTO db2_remote;
SELECT empno, firstname, lastname, salary
FROM db2_remote.employee
WHERE empno = '000010';

导入会取得封装器所需的 Db2 列元数据;默认的智能大小写折叠会将全大写名称转为小写。独立的应用角色需要外部服务 USAGE 权限、自己的用户映射以及相应模式和表权限。凭据只供单个角色使用时,不应建立 PUBLIC 映射。用户名和密码均为空字符串时会选择上游的外部认证路径,结果取决于 Db2 客户端环境。

选项与写入

  • 服务选项 dbserver 指定 Db2 连接,no_encoding_error 控制编码转换错误处理;本版本的 batch_size 为保留项,不能视为已实现批量插入。
  • 表选项 schema 和 table 指定远端对象,readonly 禁止修改。prefetch 默认为 100,允许 0–1024;fetch_size 虽可设置,目前仍固定为 1。sample_percent 控制 ANALYZE 采样。
  • 为进行 UPDATE 和 DELETE,列选项 key 必须标记全部远端主键列。导入的元数据包括 db2type、db2size、db2bytes、db2chars、db2scale、db2null 和 db2ccsid;修改导入表时应保留这些信息。
  • IMPORT FOREIGN SCHEMA 的 case 和 readonly 选项控制名称折叠以及导入表能否写入。

INSERT、UPDATE 和 DELETE 还需要 Db2 侧的权限。开放写入前,应检查列映射和远端键定义;PostgreSQL 声明本身不会创建远端主键。不支持下推的过滤会在本地执行,应检查 EXPLAIN 后再判断是否已经下推。

诊断与事务

SELECT db2_diag();
SELECT db2_diag('db2srv');
SELECT db2_close_connections();

db2_diag() 返回本地客户端与构建信息,并可选地返回远端服务诊断;db2_close_connections() 关闭当前后端缓存的连接,不应在已经修改 Db2 数据的事务中调用。长时间运行的 PostgreSQL 会话可能持续占用远端连接和事务资源。

类型与维护

常见映射包括字符类型到文本或字符类型、BLOB 到 bytea、整数类型到 PostgreSQL 整数类型,以及 DATE、TIMESTAMP、TIME 到对应类型。声明的 PostgreSQL 类型与宽度必须容纳远端值,转换错误会在查询时出现。控制版本为 18.2.0,允许重定位;普通使用无需共享预加载。IBM 客户端的环境和连接要求应以对应版本 README 为准,并区分软件包升级与对实际外部数据库的验证。

这个页面对您有帮助吗?