第一次在 Postgres 中设置 MONGO_FDW。
第一步是以默认postgres
用户身份连接后添加扩展程序:
CREATE EXTENSION mongo_fdw;
应用程序用户是app_user
,所以我同意:
GRANT CREATE SERVER TO app_user;
然后我连接为app_user
并发出:
CREATE SERVER "app_rem_db"
FOREIGN DATA WRAPPER mongo_fdw
OPTIONS (
address 'localhost',
port '27017'
);
但我收到错误:
ERROR: foreign-data wrapper "mongo_fdw" does not exist
然而,如果我运行它,CREATE SERVER
因为postgres
它有效。
如何允许其他用户创建服务器?
继续用户postgres
,我接下来创建用户映射:
CREATE USER MAPPING FOR app_user
SERVER "app_rem_db"
OPTIONS (username 'app_user_pg', password 'hello123');
如果我再次连接app_user
并尝试创建一个外部表,我会得到(mongoDB 有一个数据库mongo_test
和其中的集合testcol
):
CREATE FOREIGN TABLE mongo_testtab
(
data JSON
)
SERVER "app_rem_db"
OPTIONS (database 'mongo_test', collection 'testcol');
我再次收到错误:
ERROR: server "app_rem_db" does not exist
如果我切换回postgres
用户,我可以创建外部表。
但是当我尝试查询该表时,我得到:
select * from mongo_testtab;
ERROR: relation "mongo_testtab" does not exist
LINE 1: select * from mongo_testtab;