创建指向视图的外表

时间:2014-05-16 15:07:09

标签: postgresql postgres-fdw

是否可以使用Postgres Foreign Data Wrapper创建一个指向视图而不是表的外来表?

3 个答案:

答案 0 :(得分:8)

是的,有可能!

以下查询完美无缺:

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

其中factsmy_server中的视图,而不是表格。

答案 1 :(得分:3)

最近我不得不做同样的事情,这里有适合我的步骤。所有这些命令都在本地postgreSQL DB上运行。

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');

答案 2 :(得分:0)

我有同样的问题。 在pgadmin4 for postgresql-11中,如果使用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;

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