外国 table 可以与本地 table 同名吗?

Can a foreign table have same name as a local table?

我的问题是我正在使用 PostgreSQL 数据库并想从其他数据库导入名为 vfm 的 table,例如 B。但是在我当前的数据库 (A) 中有一个同名 table 的 table。我在查询中收到一条错误消息,指出该关系已经存在。

我想知道是否有办法使用其他名称将外部模式导入 table,或者(最好)我们是否可以直接查询另一个数据库而无需将外部模式导入 PostgreSQL ?

我一直没能找到完美的解决方案。

我假设您正在使用 postgres_fdw;对于其他外国数据包装器,情况略有不同。

不使用IMPORT FOREIGN SCHEMA.

很容易定义外来的tables

如果架构名称是 myschema,table 名称是 vfm 并且外部服务器是 serv,您可以

CREATE FOREIGN TABLE myschema.vfm_2(col1, type1, ...)
   SERVER serv
   OPTIONS (schema_name 'myschema', table_name 'vfm');

另一种选择是将 table 加载到不同的模式,例如

CREATE SCHEMA foreign_data;
IMPORT FOREIGN SCHEMA public LIMIT TO (customers) FROM SERVER serv INTO foreign_data;