无法使用postgreSQL 9.3中的Foreign Data Wrapper从pg_index访问数据

时间:2014-07-29 13:43:20

标签: postgresql postgres-fdw

我在postgreSQL 9.3中的另一个postgreSQL DATABASE中实现了外部数据包装器,如下所示:

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或任何其他方式从目录中访问数据?

1 个答案:

答案 0 :(得分:0)

您可以在外表定义中尝试schema_name option

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

但这可能不会起作用,因为pg_catalog实际上不是架构,而是系统目录。如果是这种情况,您仍然可以使用dblink module在外部数据库中运行查询。