postgresql 无法在RDS Postgres中创建外来数据 Package

o8x7eapl  于 2023-03-01  发布在  PostgreSQL
关注(0)|答案(2)|浏览(139)

因此,我尝试在运行的v12 Postgres RDS示例中创建FDW。
扩展已经存在,但由于某种原因我不能创建一个。这似乎是疯狂的简单来自一个内部部署设置。
我错过了什么?

sourceDatabase=> create extension postgres_fdw ; 
ERROR:  extension "postgres_fdw" already exists
sourceDatabase=> create foreign data wrapper testwrap ; 
ERROR:  permission denied to create foreign-data wrapper "testwrap"
HINT:  Must be superuser to create a foreign-data wrapper.
sourceDatabase=> \du
                                                               List of roles
         Role name         |                   Attributes                   |                          Member of                           
---------------------------+------------------------------------------------+--------------------------------------------------------------
 rds_superuser             | Cannot login                                   | {pg_monitor,pg_signal_backend,rds_replication,rds_password}
 rdsadmin                  | Superuser, Create role, Create DB, Replication+| {}
                           | Password valid until infinity                  | 
 rdsrepladmin              | No inheritance, Cannot login, Replication      | {}
 sourceUser                | Create role, Create DB                        +| {rds_superuser}
                           | Password valid until infinity                  |
zvms9eto

zvms9eto1#

如果您安装了postgres_fdw扩展,那么您已经有了一个名为postgres_fdw的外部数据 Package 器,因此不需要再创建一个。
psql中使用\dew验证是否已经存在外部数据 Package 。
您现在需要做的是创建一个 foreign server(包含到远程PostgreSQL数据库的连接字符串)、一个 user mapping(包含该数据库的身份验证信息)和 foreign tables(指向远程数据库中的表)。

pjngdqdw

pjngdqdw2#

AdrianKlaver说的是对的(不同的是你想创建一个 Package 器还是一个服务器)。

外部数据 Package :

这是Postgres的原生特性,可以访问多个数据库中的数据,包括Postgres、Oracle、Redis等数据库。有趣的是,您可以通过外部数据 Package 器阅读Twitter消息。Here是活动 Package 器的列表。
但是您必须编写处理程序等来访问数据。
https://www.postgresql.org/docs/10/sql-createforeigndatawrapper.html

后处理_FDW:

postgres_fdw是在postgres的contrib库下开发的一个扩展,它只针对Postgres,以使Postgres集成更加容易。所有必要的处理程序和函数都与此扩展捆绑在一起。
创建外部数据 Package 器需要真实的的超级用户权限,而且rds_superuser不起作用。
该模块提供的功能与旧的dblink模块的功能基本重叠,但是postgres_fdw提供了更透明和符合标准的语法来访问远程表,并且在许多情况下可以给予更好的性能。
因此,请参考postgres_fdw文档,而不是Foreign数据 Package 器文档。
或者最好参考官方AWS RDS文档,该文档已经由VynlJunkie分享(在评论部分)

相关问题