db2_fdw
提供对DB2的外部数据源包装器
仓库
wolfgangbrandl/db2_fdw
https://github.com/wolfgangbrandl/db2_fdw
源码
db2_fdw-18.1.1.tar.gz
db2_fdw-18.1.1.tar.gz
概览
| 扩展包名 | 版本 | 分类 | 许可证 | 语言 |
|---|---|---|---|---|
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.1 | PGDG 18.1.1 | |||
| el8.aarch64 | PGDG MISS | PGDG MISS | PGDG MISS | PGDG MISS | PGDG MISS |
| el9.x86_64 | PGDG 18.1.1 | PGDG 18.1.1 | |||
| el9.aarch64 | PGDG MISS | PGDG MISS | PGDG MISS | PGDG MISS | PGDG MISS |
| el10.x86_64 | PGDG 18.1.1 | PGDG 18.1.1 | PGDG 18.1.1 | PGDG 18.1.1 | PGDG 18.1.1 |
| 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 |
安装
您可以直接安装 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;
用法
创建服务器
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');
user 和 password 使用空字符串可启用外部认证。
创建外部表
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;
导入选项: 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';
数据类型映射
| DB2 类型 | PostgreSQL 类型 |
|---|---|
| CHAR | char |
| VARCHAR | varchar |
| CLOB | text |
| BLOB | bytea |
| SMALLINT, INTEGER, BIGINT | smallint, integer, bigint |
| DOUBLE | numeric, float |
| DATE | date |
| TIMESTAMP | timestamp |
| TIME | time |
WHERE 条件和列投影会下推到 DB2 以最小化数据传输。