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