jdbc_fdw

访问JDBC可访问的任何外部数据源

概览

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

missing el.aarch64

版本

类型仓库版本PG 大版本包名依赖
EXTPGDG0.4.01817161514jdbc_fdw-
RPMPGDG0.4.01817161514jdbc_fdw_$vjava-11-openjdk-headless
OS / PGPG18PG17PG16PG15PG14
el8.x86_64PGDG MISSPGDG MISS
el8.aarch64PGDG MISSPGDG MISSPGDG MISSPGDG MISSPGDG MISS
el9.x86_64PGDG MISSPGDG MISS
el9.aarch64PGDG MISSPGDG MISSPGDG MISSPGDG MISSPGDG MISS
el10.x86_64PGDG MISSPGDG MISSPGDG MISSPGDG MISSPGDG MISS
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

安装

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

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

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

pig install jdbc_fdw;          # 当前活跃 PG 版本安装
pig ext install -y jdbc_fdw -v 16  # PG 16
pig ext install -y jdbc_fdw -v 15  # PG 15
pig ext install -y jdbc_fdw -v 14  # PG 14
dnf install -y jdbc_fdw_16       # PG 16
dnf install -y jdbc_fdw_15       # PG 15
dnf install -y jdbc_fdw_14       # PG 14

创建扩展

CREATE EXTENSION jdbc_fdw;

用法

jdbc_fdw: 通过 JDBC 访问远程服务器的外部数据包装器

创建服务器

CREATE EXTENSION jdbc_fdw;

CREATE SERVER jdbc_server FOREIGN DATA WRAPPER jdbc_fdw
  OPTIONS (
    drivername 'org.postgresql.Driver',
    url 'jdbc:postgresql://remotehost:5432/mydb',
    jarfile '/usr/share/java/postgresql.jar',
    maxheapsize '256'
  );

服务器选项: drivername(必填,JDBC 驱动类)、url(必填,JDBC 连接 URL)、jarfile(必填,JDBC 驱动 JAR 的绝对路径)、querytimeout(查询超时秒数)、maxheapsize(JVM 堆大小 MB,最小 1)。

创建用户映射

CREATE USER MAPPING FOR CURRENT_USER SERVER jdbc_server
  OPTIONS (username 'dbuser', password 'dbpass');

创建外部表

CREATE FOREIGN TABLE remote_table (
  id integer OPTIONS (key 'true'),
  name text,
  value numeric
)
SERVER jdbc_server
OPTIONS (table_name 'schema.tablename');

在主键列上设置 key 'true' 以启用 UPDATE 和 DELETE 操作。

查询远程数据

SELECT * FROM remote_table WHERE id > 100;

使用 jdbc_exec 执行任意 SQL

jdbc_exec 函数在远程数据库上执行 SQL 并返回结果集:

SELECT * FROM jdbc_exec('jdbc_server', 'SELECT id, name FROM remote_schema.remote_table WHERE status = 1')
  AS t(id integer, name text);

这对于执行超出外部表定义范围的查询很有用,包括在远程服务器上执行 DDL 或复杂查询。


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