PostgreSQL 实现了部分 SQL/MED 规范,它允许你使用常规 SQL 查询来访问驻留在 PostgreSQL 之外的外部数据。此类数据称为外部数据。(请注意,此用法不要与外键混淆,外键是数据库中的约束类型。)
通过外部数据包装器访问外部数据。外部数据包装器是一个可以与外部数据源通信的库,隐藏与数据源建立连接并获取从中获取数据等复杂过程的细节。一些外部数据包装器可用作contrib
模块;请参见附录 F。其他种类的外部数据包装器可能以第三方产品形式出现。如果现有外部数据包装器都不满足您的需求,您可以编写自己的包装器;请参见第 57 章。
要访问外部数据,您需要创建一个外部服务器对象,该对象定义如何根据支持它的外部数据包装器使用的选项集连接到特定外部数据源。然后,您需要创建一个或多个外部表,其中定义了远程数据的结构。外部表可在查询中像普通表一样使用,但外部表在 PostgreSQL 服务器中没有存储。每当使用外部表时,PostgreSQL 都会要求外部数据包装器从外部源获取数据,或在更新命令中向外部源传输数据。
访问远程数据可能需要对外部数据源进行身份验证。此信息可由用户映射提供,该映射可根据当前PostgreSQL 角色提供附加数据,例如用户名和密码。
有关详细信息,请参见CREATE FOREIGN DATA WRAPPER、CREATE SERVER、CREATE USER MAPPING、CREATE FOREIGN TABLE和IMPORT FOREIGN SCHEMA。