db2_fdw
概览
| 扩展包名 | 版本 | 分类 | 许可证 | 语言 |
|---|---|---|---|---|
db2_fdw | 18.1.1 | FDW | PostgreSQL | C |
| ID | 扩展名 | Bin | Lib | Load | Create | Trust | Reloc | 模式 |
|---|---|---|---|---|---|---|---|---|
| 8630 | db2_fdw | 否 | 是 | 否 | 是 | 否 | 否 | - |
| 相关扩展 | odbc_fdw mysql_fdw oracle_fdw tds_fdw wrappers multicorn jdbc_fdw postgres_fdw |
|---|
版本
| 类型 | 仓库 | 版本 | PG 大版本 | 包名 | 依赖 |
|---|---|---|---|---|---|
| EXT | PGDG | 18.1.1 | 1817161514 | db2_fdw | - |
| RPM | PGDG | 18.1.1 | 1817161514 | db2_fdw_$v | - |
| OS / PG | PG18 | PG17 | PG16 | PG15 | PG14 |
|---|---|---|---|---|---|
| el8.x86_64 | PGDG 18.1.2 | PGDG 18.1.2 el8.x86_64.pg14 : db2_fdw_14 db2_fdw_14-18.1.2-1PGDG.rhel8.10.x86_64.rpm
db2_fdw_14-18.1.1-1PGDG.rhel8.10.x86_64.rpm
db2_fdw_14-18.0.1-2PGDG.rhel8.x86_64.rpm
db2_fdw_14-18.0.1-1PGDG.rhel8.x86_64.rpm
db2_fdw_14-7.0.0-1PGDG.rhel8.x86_64.rpm
db2_fdw_14-6.0.1-1PGDG.rhel8.x86_64.rpm
db2_fdw_14-5.0.0-1.rhel8.x86_64.rpm
| |||
| el8.aarch64 | PGDG MISS | PGDG MISS | PGDG MISS | PGDG MISS | PGDG MISS |
| el9.x86_64 | PGDG 18.1.2 | PGDG 18.1.2 el9.x86_64.pg14 : db2_fdw_14 db2_fdw_14-18.1.2-1PGDG.rhel9.7.x86_64.rpm
db2_fdw_14-18.1.1-1PGDG.rhel9.7.x86_64.rpm
db2_fdw_14-18.0.1-2PGDG.rhel9.x86_64.rpm
db2_fdw_14-18.0.1-1PGDG.rhel9.x86_64.rpm
db2_fdw_14-7.0.0-1PGDG.rhel9.x86_64.rpm
db2_fdw_14-6.0.1-1PGDG.rhel9.x86_64.rpm
db2_fdw_14-5.0.0-1.rhel9.x86_64.rpm
| |||
| el9.aarch64 | PGDG MISS | PGDG MISS | PGDG MISS | PGDG MISS | PGDG MISS |
| el10.x86_64 | PGDG 18.1.2 | ||||
| el10.aarch64 | PGDG MISS | PGDG MISS | PGDG MISS | PGDG MISS | PGDG MISS |
| d12.x86_64 | PGDG MISS | PGDG MISS | PGDG MISS | PGDG MISS | PGDG MISS |
| d12.aarch64 | PGDG MISS | PGDG MISS | PGDG MISS | PGDG MISS | PGDG MISS |
| d13.x86_64 | PGDG MISS | PGDG MISS | PGDG MISS | PGDG MISS | PGDG MISS |
| d13.aarch64 | PGDG MISS | PGDG MISS | PGDG MISS | PGDG MISS | PGDG MISS |
| u22.x86_64 | PGDG MISS | PGDG MISS | PGDG MISS | PGDG MISS | PGDG MISS |
| u22.aarch64 | PGDG MISS | PGDG MISS | PGDG MISS | PGDG MISS | PGDG MISS |
| u24.x86_64 | PGDG MISS | PGDG MISS | PGDG MISS | PGDG MISS | PGDG MISS |
| u24.aarch64 | PGDG MISS | PGDG MISS | PGDG MISS | PGDG MISS | PGDG MISS |
| u26.x86_64 | PGDG MISS | PGDG MISS | PGDG MISS | PGDG MISS | PGDG MISS |
| u26.aarch64 | PGDG MISS | PGDG MISS | PGDG MISS | PGDG MISS | PGDG 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;
用法
来源:README, current upstream README
db2_fdw 是一个 PostgreSQL foreign data wrapper,可从 PostgreSQL 查询和修改 IBM Db2 表。它会尽可能下推所需列和 WHERE 条件,并提供连接清理和诊断辅助函数。
创建服务器
CREATE EXTENSION db2_fdw;
CREATE SERVER db2srv FOREIGN DATA WRAPPER db2_fdw
OPTIONS (dbserver 'SAMPLE');
服务器选项: dbserver(必填的 Db2 连接字符串)、batch_size(当前保留给未来批处理行为)、no_encoding_error(ON、OFF、YES、NO、TRUE 或 FALSE)。
创建用户映射
CREATE USER MAPPING FOR PUBLIC SERVER db2srv
OPTIONS (user 'db2inst1', password 'secret');
将 user 和 password 设为空字符串,可通过 Db2 客户端环境启用外部认证。
创建外部表
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)、sample_percent(ANALYZE 采样)、prefetch(每次往返获取的行数,默认 100,范围 0-1024)、fetch_size(可接受但当前固定为 1)、batch_size、no_encoding_error。上游文档将 max_long 标为 deprecated,且不再使用。
列选项: key(所有主键列都要设为 true,UPDATE 和 DELETE 必需),以及导入表上的 Db2 元数据选项,例如 db2type、db2size、db2bytes、db2chars、db2scale、db2null、db2ccsid。
导入外部模式
IMPORT FOREIGN SCHEMA "DB2INST1" FROM SERVER db2srv INTO public;
导入选项: case(keep、lower 或 smart,默认 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';
连接辅助函数
SELECT db2_close_connections();
SELECT db2_diag();
SELECT db2_diag('db2srv');
db2_close_connections() 会关闭当前会话中缓存的 Db2 连接。db2_diag() 会报告 db2_fdw、PostgreSQL、Db2 client,以及可选远端服务器的诊断详情。
数据类型映射
| DB2 Type | PostgreSQL Types |
|---|---|
| CHAR | char |
| VARCHAR | varchar |
| CLOB | text |
| VARGRAPHIC, GRAPHIC | text |
| BLOB | bytea |
| SMALLINT, INTEGER, BIGINT | smallint, integer, bigint |
| DOUBLE | numeric, float |
| DATE | date |
| TIMESTAMP | timestamp |
| TIME | time |
WHERE 条件和列投影会下推到 DB2,以减少数据传输。