odbc_fdw

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

概览

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

版本

类型仓库版本PG 大版本包名依赖
EXTPGDG0.5.11817161514odbc_fdw-
RPMPGDG0.5.11817161514odbc_fdw_$vunixODBC
OS / PGPG18PG17PG16PG15PG14
el8.x86_64PGDG MISS
el8.aarch64PGDG MISS
el9.x86_64PGDG MISS
el9.aarch64PGDG MISS
el10.x86_64PGDG MISS
el10.aarch64PGDG 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

安装

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

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

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

pig install odbc_fdw;          # 当前活跃 PG 版本安装
pig ext install -y odbc_fdw -v 17  # PG 17
pig ext install -y odbc_fdw -v 16  # PG 16
pig ext install -y odbc_fdw -v 15  # PG 15
pig ext install -y odbc_fdw -v 14  # PG 14
dnf install -y odbc_fdw_17       # PG 17
dnf install -y odbc_fdw_16       # PG 16
dnf install -y odbc_fdw_15       # PG 15
dnf install -y odbc_fdw_14       # PG 14

创建扩展

CREATE EXTENSION odbc_fdw;

用法

odbc_fdw: 通过 ODBC 访问远程数据库的外部数据包装器

创建服务器

使用 ODBC 配置中定义的 DSN 连接:

CREATE EXTENSION odbc_fdw;

CREATE SERVER odbc_server
  FOREIGN DATA WRAPPER odbc_fdw
  OPTIONS (dsn 'test');

或者不使用 DSN,直接指定连接属性:

CREATE SERVER odbc_server
  FOREIGN DATA WRAPPER odbc_fdw
  OPTIONS (
    odbc_DRIVER 'MySQL',
    odbc_SERVER '192.168.1.17',
    encoding 'iso88591'
  );

服务器选项: dsn(ODBC 数据源名称)、driver(ODBC 驱动名称,无 DSN 时必填)、odbc_*(驱动特定属性)、encoding(远程数据库字符编码)。

驱动特定选项需加 odbc_ 前缀。属性 DSN、DRIVER、UID 和 PWD 会自动转为大写。

创建用户映射

CREATE USER MAPPING FOR postgres
  SERVER odbc_server
  OPTIONS (odbc_UID 'root', odbc_PWD '');

创建外部表

CREATE FOREIGN TABLE odbc_table (
  id integer,
  name varchar(255),
  description text,
  users float4,
  created timestamp
)
SERVER odbc_server
OPTIONS (
  odbc_DATABASE 'mydb',
  schema 'test',
  sql_query 'SELECT id, name, description, created, users FROM test.mytable',
  sql_count 'SELECT count(id) FROM test.mytable'
);

SELECT * FROM odbc_table;

表选项: schema(远程模式)、table(远程表名)、sql_query(自定义 SQL 查询,覆盖 table)、sql_count(自定义计数 SQL)。

导入外部模式

IMPORT FOREIGN SCHEMA test
  FROM SERVER odbc_server
  INTO public
  OPTIONS (odbc_DATABASE 'mydb');

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