Postgresql 创建指向视图的外部表

Postgresql 创建指向视图的外部表,postgresql,postgres-fdw,Postgresql,Postgres Fdw,是否可以使用Postgres外部数据包装器创建指向视图而不是表的外部表?是的,这是可能的 以下查询非常有效: CREATE FOREIGN TABLE facts(name character varying(255)) SERVER my_server OPTIONS (table_name 'facts'); 其中facts是myu server中的一个视图,而不是一个表。最近我不得不做同样的事情,下面是对我有效的步骤。所有这些命令都在本地postgreSQL数据库上运行 CREATE

是否可以使用Postgres外部数据包装器创建指向视图而不是表的外部表?

是的,这是可能的

以下查询非常有效:

CREATE FOREIGN TABLE facts(name character varying(255))
SERVER my_server 
OPTIONS (table_name 'facts');

其中
facts
myu server
中的一个视图,而不是一个表。

最近我不得不做同样的事情,下面是对我有效的步骤。所有这些命令都在本地postgreSQL数据库上运行

CREATE EXTENSION postgres_fdw;
CREATE SERVER remote_server_name
  FOREIGN DATA WRAPPER postgres_fdw
  OPTIONS (host '10.10.10.10', port '5432', dbname 'remote_db_name');

CREATE USER MAPPING FOR local_user_name
  SERVER remote_server_name
  OPTIONS (user 'remote_user', password 'remote_password');

CREATE FOREIGN TABLE local_table_name (
  id NUMERIC NOT NULL,
  row TEXT,
  another_row INTEGER,
  whatever_row TEXT
)
  SERVER remote_server_name
  OPTIONS (schema_name 'public', table_name 'remote_table_name');
我有同样的问题。 在postgresql-11的pgadmin4中,如果使用GUI命令:Create->Foreign Table。。。 在桌子上,它工作;但在视图中,它不起作用,您将得到一张空表

对于视图,我使用此代码,它可以工作:

IMPORT FOREIGN SCHEMA remote_schema_name
LIMIT TO (remote_view_name)
FROM SERVER remote_host_map_name INTO local_shema_name;

原因是,对于table,pgadmin4可以在constract SQL语句中创建与远程表相同的列,但对于view,它不会在constract SQL语句中创建列。

AFAIK如果与外部表的名称相同,则不必指定
table\u name
选项。如果使用
IMPORT foreign SCHEMA
,则也不必指定表定义,但是您必须在
LIMIT to
子句中明确地包含视图。