IMPORT FOREIGN SCHEMA — 从外部服务器导入表定义
IMPORT FOREIGN SCHEMAremote_schema[ { LIMIT TO | EXCEPT } (table_name[, ...] ) ] FROM SERVERserver_nameINTOlocal_schema[ OPTIONS (option'value' [, ... ] ) ]
IMPORT FOREIGN SCHEMA 创建一些外部表,用来表示存在于一个外部服务器上的表。新的外部表将由发出该命令的用户拥有,并且会以正确的列定义和选项创建,以匹配远程表。
默认情况下,外部服务器上某个特定模式中存在的所有表和视图都会被导入。也可以选择把表列表限制为指定的一个子集,或者排除某些特定的表。新的外部表全部创建在目标模式中,该模式必须已经存在。
要使用 IMPORT FOREIGN SCHEMA,用户必须对该外部服务器拥有 USAGE 特权,并且对目标模式拥有 CREATE 特权。
remote_schema要从中导入的远程模式。远程模式的具体含义取决于所使用的外部数据封装器。
LIMIT TO ( table_name [, ...] )只导入与给定表名之一相匹配的外部表。外部模式中存在的其他表将被忽略。
EXCEPT ( table_name [, ...] )把指定的外部表排除在导入之外。外部模式中存在的所有表都将被导入,这里列出的表除外。
server_name要从中导入的外部服务器。
local_schema导入的外部表将在其中创建的模式。
OPTIONS ( option 'value' [, ...] )导入期间要使用的选项。允许的选项名称和值是每种外部数据封装器特有的。
从服务器 film_server 上的远程模式 foreign_films 导入表定义,并在本地模式 films 中创建外部表:
IMPORT FOREIGN SCHEMA foreign_films
FROM SERVER film_server INTO films;
与上面相同,但只导入 actors 和 directors 这两张表(如果它们存在):
IMPORT FOREIGN SCHEMA foreign_films LIMIT TO (actors, directors)
FROM SERVER film_server INTO films;
IMPORT FOREIGN SCHEMA 命令符合 SQL 标准,但 OPTIONS 子句是 PostgreSQL 的一个扩展。