odbc_fdw
概览
| 扩展包名 | 版本 | 分类 | 许可证 | 语言 |
|---|---|---|---|---|
odbc_fdw | 0.5.2 | FDW | PostgreSQL | C |
| ID | 扩展名 | Bin | Lib | Load | Create | Trust | Reloc | 模式 |
|---|---|---|---|---|---|---|---|---|
| 8520 | odbc_fdw | 否 | 是 | 否 | 是 | 否 | 是 | - |
| 相关扩展 | wrappers multicorn jdbc_fdw mysql_fdw oracle_fdw tds_fdw db2_fdw postgres_fdw |
|---|
Package/source version 0.6.1; SQL extension version 0.5.2. Live queries require an installed ODBC driver and configured DSN.
版本
| 类型 | 仓库 | 版本 | PG 大版本 | 包名 | 依赖 |
|---|---|---|---|---|---|
| EXT | MIXED | 0.5.2 | 1817161514 | odbc_fdw | - |
| RPM | PGDG | 0.6.1 | 1817161514 | odbc_fdw_$v | unixODBC |
| DEB | PIGSTY | 0.6.1 | 1817161514 | postgresql-$v-odbc-fdw | libodbc2 |
构建
您可以使用 pig build 命令构建 odbc_fdw 扩展的 DEB 包:
pig build pkg odbc_fdw # 构建 DEB 包
安装
您可以直接安装 odbc_fdw 扩展包的预置二进制包,首先确保 PGDG 和 PIGSTY 仓库已经添加并启用:
pig repo add pgsql -u # 添加仓库并更新缓存
使用 pig 或者是 apt/yum/dnf 安装扩展:
pig install odbc_fdw; # 当前活跃 PG 版本安装
pig ext install -y odbc_fdw -v 18 # PG 18
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_18 # PG 18
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
apt install -y postgresql-18-odbc-fdw # PG 18
apt install -y postgresql-17-odbc-fdw # PG 17
apt install -y postgresql-16-odbc-fdw # PG 16
apt install -y postgresql-15-odbc-fdw # PG 15
apt install -y postgresql-14-odbc-fdw # PG 14
创建扩展:
CREATE EXTENSION odbc_fdw;
用法
来源:
odbc_fdw 将 ODBC 数据源中的表或驱动程序特定查询暴露为 PostgreSQL 外部表。它主要是一个跨异构系统的读取/查询桥梁;在依赖其进行生产查询之前,请验证数据类型转换和远程驱动行为。
核心工作流程
CREATE EXTENSION odbc_fdw;
-- In 0.6.1 a superuser must set the server-level dsn or driver option.
CREATE SERVER warehouse_odbc
FOREIGN DATA WRAPPER odbc_fdw
OPTIONS (dsn 'warehouse');
CREATE USER MAPPING FOR analyst
SERVER warehouse_odbc
OPTIONS (odbc_UID 'reporter', odbc_PWD 'secret');
CREATE FOREIGN TABLE remote_customer (
id bigint,
name text,
created_at timestamp
) SERVER warehouse_odbc
OPTIONS (schema 'sales', table 'customer');
SELECT * FROM remote_customer WHERE id = 42;
使用 driver 替代 dsn 进行无 DSN 连接。其他驱动程序属性使用 odbc_ 前缀,并可放置在服务器、用户映射或外部表上。将凭据放在用户映射中。对大小写敏感的属性名称进行引号引用,必要时用花括号包裹包含 = 或 ; 的值。
查询和导入
sql_query 覆盖 table;当 FDW 需要显式行数查询时,请与 sql_count 结合使用:
CREATE FOREIGN TABLE active_customer (
id bigint,
name text
) SERVER warehouse_odbc
OPTIONS (
sql_query 'SELECT id, name FROM sales.customer WHERE active = 1',
sql_count 'SELECT count(*) FROM sales.customer WHERE active = 1'
);
IMPORT FOREIGN SCHEMA sales
FROM SERVER warehouse_odbc
INTO imported
OPTIONS (prefix 'odbc_');
重要对象和选项
dsn或driver选择 ODBC 数据源;0.6.1 版本限制这些服务器选项仅对超级用户可用,因为驱动程序管理器加载共享库。schema、table、sql_query和sql_count选择远程关系或查询。prefix改变由IMPORT FOREIGN SCHEMA创建的本地名称。ODBCTablesList(server_name, ...)列出可见的远程表。ODBCTableSize(server_name, table_name)和ODBCQuerySize(server_name, query)返回远程行数。
0.6.0 版本恢复了兼容性并修复了最近 PostgreSQL 发行版上的崩溃。0.6.1 版本转义了远程字面量和标识符以防止 SQL 注入,限制了驱动程序选择,并在调试连接字符串中屏蔽了常见的凭据属性。升级前请允许委派 FDW 使用,同时保留正常的服务器所有权和用户映射控制。
仅支持上游 README 中列出的 ODBC 类型。标识符长度、驱动程序 SQL 语法、编码、空值处理和二进制值可能会有所不同。源/包版本为 0.6.1,而控制文件和安装 SQL 继续声明扩展版本 0.5.2。