【问题标题】:Postgresql foreign data wrapperPostgresql 外来数据包装器
【发布时间】:2020-03-25 22:41:57
【问题描述】:

希望得到一些帮助,因为我是 postgresql 管理员的新手!

我有 2 个服务器添加到 pgadmin,服务器 1 是 Heroku 上的托管数据库,另一个是服务器本地的

我想将 Heroku 数据库作为外部表添加到本地数据库

我可以链接这两个服务器吗?到目前为止我失败了

我在本地设置了 fdw 扩展,并且可以在三个本地 db 上使用它 好的,我是否还需要在 Heroku db 上设置扩展?

我已将 fdw 服务器设置为 host localhost --- 这应该是 Heroku 主机路径吗?或者这可以吗,因为我添加了---server local?如果我添加实际主机路径,我会收到 fsrvoption 错误 数据库名 数据库名 5432端口

然后设置用户 用户用户名 密码密码

任何帮助表示赞赏!

恶意

【问题讨论】:

  • "或者因为我添加了 --server local 就可以了吗?"添加到什么?请显示您运行的命令。
  • "我收到 fsrvoption 错误" 请显示实际的错误消息。
  • 我将 fdw 服务器添加为本地(尽管它被托管在其他地方,假设我已经创建了一个本地服务器连接到它)创建服务器 herokudata 外国数据包装 heroku 选项(主机'localhost' ,dbname 'heroku',端口 '5432');
  • 嗨 jjanes,我添加了实际错误的屏幕截图,当我将主机从本地主机更改为实际 path.compute.amazonaws.com 时,我得到了这个,但我假设当我在本地创建服务器时我可以说主机是本地主机??
  • 您的屏幕截图未显示 PostgreSQL 错误。它似乎来自 web 应用程序本身,可能是 pgadmin4,或者一些特定于 heroku 的管理工具。

标签: postgresql


【解决方案1】:

您无需在远程服务器上设置任何内容即可通过外部数据包装器访问它;外部数据包装器将作为常规数据库客户端访问远程数据库。

一旦你正确设置了 postgres_fdw,你就可以使用它来访问远程服务器上的表,就像它们是本地表一样。外部表在某些方面有点像视图。

也许它有助于理解所涉及的对象:

  • 外来数据包装器封装了访问远程数据源(PostgreSQL客户端)的代码。

  • 外部服务器包装远程数据库的连接字符串。

  • 用户映射包含用户访问外部服务器的凭据。

  • 外部表描述了远程服务器上的一个表。

您可以使用命令IMPORT FOREIGN SCHEMA 自动为远程服务器上的架构中的所有(或部分)表定义外部表。

一旦正确定义了外部表,您就可以像本地表一样在 SQL 语句中使用它们,但实际上您将在远程服务器上读取和写入数据。

经过一番调试,问题竟然是这样的:

  • 使用 pgAdmin 创建外部服务器导致 fsrvoption 出现奇怪错误(通过查询工具运行 CREATE SERVER 有效)。

  • 使用localhost而不是正确的服务器地址创建外部服务器,不出所料地给出了数据库不存在的错误。

【讨论】:

  • 嗨,laurenz,我想我已经完成了这一切!但是当我尝试导入外部模式时出现错误,我使用创建模式 herokulive;从服务器 herokudata 导入外部 SCHEMA public 到 herokulive;但我收到错误错误:无法连接到服务器“herokudata”详细信息:致命:数据库“dbname”不存在
  • 好吧,那你有解释了。选择一个存在的数据库。不要在数据库名称(或其他对象名称)中使用大写。
  • 但它确实存在 :) 我添加了显示 db 的屏幕截图
  • 请准确显示您使用的CREATE SERVERCREATE USER MAPPING 语句。另外,远程数据库的主机名和端口是什么?您可能连接到错误的 PostgreSQL 实例。
  • CREATE SERVER flowher 外国数据包装器 postgres_fdw 选项(主机 'localhost',dbname 'd11mcb7mgocbd9'); CREATE USER MAPPING FOR CURRENT_USER SERVER flowher OPTIONS (user 'user1', password 'password');
猜你喜欢
  • 2018-08-30
  • 2020-05-12
  • 2021-06-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多