↑↓ 选择 ↵ 打开 ⌫ 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

百科 / SQL 命令 / 外部数据

SQL COMMAND · 外部数据

CREATE FOREIGN DATA WRAPPER

定义一个新的外部数据包装器

define a new foreign-data wrapper

CREATE外部数据引入 8.4现存至 20 devel2 次语法变更

动词
CREATE
对象
FOREIGN DATA WRAPPER
引入版本
8.4
状态
现存
语法变更次数
2
手册小节数
6

本站手册 · 18官方文档 ↗

版本轨迹

相对 PostgreSQL 17 无变化。

语法铁道图 PostgreSQL 18

沿轨道从左向右阅读,分岔表示选择,绕行表示可选,回环表示重复。方框为参数,点击带下划线的参数可展开子规则。

CREATE FOREIGN DATA WRAPPER name HANDLER handler_function NO HANDLER VALIDATOR validator_function NO VALIDATOR OPTIONS ( option ' value ' , )

语法概要

CREATE FOREIGN DATA WRAPPER name
[ HANDLER handler_function | NO HANDLER ]
[ VALIDATOR validator_function | NO VALIDATOR ]
[ OPTIONS ( option 'value' [, ... ] ) ]

PostgreSQL 18 手册 · 查看完整参考页

描述

CREATE FOREIGN DATA WRAPPER 创建一个新的外部数据包装器。定义该外部数据包装器的用户将成为它的拥有者。

外部数据包装器名称在数据库内必须唯一。

只有超级用户能够创建外部数据包装器。

参数

name

要创建的外部数据包装器的名称。

HANDLER handler_function

handler_function 是一个预先注册的函数的名称,该函数将被调用以取得外部表所需的执行函数。该处理器函数不能接受任何参数,并且其返回类型必须是 fdw_handler。

可以创建没有处理器函数的外部数据包装器,但使用这种包装器的外部表只能被声明,不能被访问。

VALIDATOR validator_function

validator_function 是一个预先注册的函数的名称,该函数将被调用以检查提供给该外部数据包装器的通用选项,以及用于外部服务器、用户映射和使用该外部数据包装器的外部表的选项。如果未指定验证器函数或者指定了 NO VALIDATOR,则在创建时不会检查这些选项。(外部数据包装器可能会在运行时忽略无效的选项声明,或者拒绝它们,这取决于其实现。)验证器函数必须接受两个参数:一个参数的类型为 text[],其中包含系统目录中存储的选项数组;另一个参数的类型为 oid,其值是包含这些选项的系统目录的 OID。返回类型会被忽略;该函数应当使用 ereport(ERROR) 报告无效选项。

OPTIONS ( option 'value' [, ... ] )

这个子句为新的外部数据包装器指定选项。允许的选项名和值都依赖于各个外部数据包装器,并通过该外部数据包装器的验证器函数进行验证。选项名必须唯一。

注解

PostgreSQL 的外部数据功能仍在积极开发中。查询优化能力还很初级,而且这项工作在很大程度上也留给了包装器本身。因此,未来在性能方面仍有相当大的改进空间。

示例

创建一个无用的外部数据包装器 dummy:

CREATE FOREIGN DATA WRAPPER dummy;

用处理器函数 file_fdw_handler 创建一个外部数据包装器 file:

CREATE FOREIGN DATA WRAPPER file HANDLER file_fdw_handler;

用一些选项创建一个外部数据包装器 mywrapper:

CREATE FOREIGN DATA WRAPPER mywrapper
    OPTIONS (debug 'true');

兼容性

CREATE FOREIGN DATA WRAPPER 符合 ISO/IEC 9075-9 (SQL/MED),但 HANDLER 和 VALIDATOR 子句属于扩展,而标准中的 LIBRARY 和 LANGUAGE 子句在 PostgreSQL 中尚未实现。

不过需要注意,SQL/MED 功能整体上尚未完全符合该标准。

另见

语法演化

相邻大版本之间的差异,新的在前。版本号链接到对应快照。

  1. PostgreSQL 19← 18语法变化

    + [ CONNECTION connection_function | NO CONNECTION ]+ [ OPTIONS ( option 'value' [, ... ] ) ]正文更新
  2. PostgreSQL 9.3← 9.2正文更新

    正文更新
  3. PostgreSQL 9.1← 9.0语法变化

    + [ HANDLER handler_function | NO HANDLER ]+ [ VALIDATOR validator_function | NO VALIDATOR ]− [ VALIDATOR valfunction | NO VALIDATOR ]正文更新
  4. PostgreSQL 8.4← 8.3新增此命令

同组命令

命令动词对象版本变动最近变更
FOREIGN DATA外部数据13 条↑
CREATE FOREIGN DATA WRAPPERCREATEFOREIGN DATA WRAPPER 192 次
定义一个新的外部数据包装器现存
ALTER FOREIGN DATA WRAPPERALTERFOREIGN DATA WRAPPER 195 次
更改外部数据包装器的定义现存
DROP FOREIGN DATA WRAPPERDROPFOREIGN DATA WRAPPER 101 次
移除一个外部数据包装器现存
IMPORT FOREIGN SCHEMAIMPORTFOREIGN SCHEMA —
从一个外部服务器导入表定义现存
CREATE FOREIGN TABLECREATEFOREIGN TABLE 187 次
定义一个新外部表现存
ALTER FOREIGN TABLEALTERFOREIGN TABLE 167 次
更改外部表的定义现存
DROP FOREIGN TABLEDROPFOREIGN TABLE —
移除一个外部表现存
CREATE SERVERCREATESERVER 102 次
定义一个新的外部服务器现存
ALTER SERVERALTERSERVER 144 次
更改外部服务器的定义现存
DROP SERVERDROPSERVER 103 次
移除一个外部服务器描述符现存
CREATE USER MAPPINGCREATEUSER MAPPING 143 次
定义用户到外部服务器的新映射现存
ALTER USER MAPPINGALTERUSER MAPPING 143 次
更改用户映射的定义现存
DROP USER MAPPINGDROPUSER MAPPING 142 次
删除外部服务器的用户映射现存