外国 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;
我的问题是我正在使用 PostgreSQL 数据库并想从其他数据库导入名为 vfm
的 table,例如 B
。但是在我当前的数据库 (A
) 中有一个同名 table 的 table。我在查询中收到一条错误消息,指出该关系已经存在。
我想知道是否有办法使用其他名称将外部模式导入 table,或者(最好)我们是否可以直接查询另一个数据库而无需将外部模式导入 PostgreSQL ?
我一直没能找到完美的解决方案。
我假设您正在使用 postgres_fdw;对于其他外国数据包装器,情况略有不同。
不使用IMPORT FOREIGN SCHEMA
.
如果架构名称是 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;