带有 Redshift 的 Postgres 外部模式:我可以使用外部数据包装器吗?

Posted

技术标签:

【中文标题】带有 Redshift 的 Postgres 外部模式:我可以使用外部数据包装器吗?【英文标题】:Postgres external schemas with Redshift: can I use a foreign data wrapper? 【发布时间】:2021-01-14 16:46:11 【问题描述】:

我有一个 Postgres 数据库,我想从我的 Redshift 集群中查询。我已经使用CREATE EXTERNAL SCHEMA 成功创建了架构。

但架构本身是空的。我在查询编辑器的模式下拉列表中看不到任何表,当我尝试查询我知道存在的表时,我收到错误消息:

错误:表可能不存在或不支持关系类型代码:25000 上下文:查询:0 位置:pgclient.cpp:189 进程:padbmaster [pid=19735]

我怀疑这是因为这些表是外部表(从供应商的数据库复制)。有没有办法让 Redshift 识别这些表并让我查询它们?

【问题讨论】:

【参考方案1】:

您的查询返回错误消息的原因可能是因为它永远无法访问您的远程数据库。我假设您已按照此处的所有适当步骤操作:https://docs.aws.amazon.com/redshift/latest/dg/getting-started-federated.html

尝试在 Redshift 集群的“网络和安全”配置中启用增强型 VPC 路由

我遇到了同样的问题,即使我的 Postgres RDS 实例和 Redshift 集群在同一个 VPC 和子网组中,我也无法创建外部架构连接,直到启用增强型 VPC 路由。

相关线程:https://forums.aws.amazon.com/thread.jspa?threadID=323013

【讨论】:

以上是关于带有 Redshift 的 Postgres 外部模式:我可以使用外部数据包装器吗?的主要内容,如果未能解决你的问题,请参考以下文章

将 Postgres RDS 模式复制到 Redshift

redshift 按字符串的一部分对外部表进行分区

dbplyr 当前是不是假设 redshift 连接实际上是 postgres 连接?

将一张表从 RDS / postgres 加载到 Redshift

Postgres/Redshift DATEDIFF 转换为 FLOAT

过滤器(其中......),可用于Postgres,但不能用于Redshift。