无法在 postgreSQL 9.3 中使用外部数据包装器访问pg_index中的数据



我在另一个postgreSQL数据库中实现了postgreSQL 9.3中的Foreign data wrapper

CREATE SERVER app_db 
                   FOREIGN DATA WRAPPER postgres_fdw 
                   OPTIONS (dbname 'postgres', host 'localhost');
 CREATE USER MAPPING for postgres 
                      SERVER app_db 
                      OPTIONS (user 'postgres', password 'XXXX');

CREATE FOREIGN TABLE location_local
              (
                     id integer,
                    name character varying
               )
             SERVER app_db OPTIONS (table_name 'location') 
SELECT * FROM location_local;

这一切都工作得很好,因为位置表在公共模式中。但我还想访问pg_catalog中的数据。当我按照相同的程序访问数据时,它会给我错误。

ERROR:  relation "public.pg_catalog.pg_index" does not exist

是否可以使用FDW或其他方式访问目录中的数据?

您可以尝试在外部表定义中使用schema_name选项:

CREATE FOREIGN TABLE foreign_index (
    -- ...
)
SERVER app_db
OPTIONS (
    schema_name 'pg_catalog',
    table_name 'pg_index'
);

但是这可能不起作用,因为pg_catalog实际上不是一个模式,而是一个系统编目。如果是这种情况,您仍然可以使用dblink模块在外部数据库上运行查询。

相关内容

  • 没有找到相关文章

最新更新