Amazon Redshift 是否支持扩展 dblink?

Does Amazon Redshift support extension dblink?

CREATE EXTENSION dblink;

我尝试在 AWS 中创建扩展 dblink,但收到此错误。

ERROR: syntax error at or near "EXTENSION" LINE 1: create extension dblink;

是也不是

Amazon Redshift 本身不提供dblink。但是,您可以在 不同的 PostgreSQL 服务器上安装 dblink,并使用它连接到 Amazon Redshift。

参见:JOIN Amazon Redshift AND Amazon RDS PostgreSQL WITH dblink

答案是 "Yes",但您必须利用 RDS 的 Dblink 功能将 Amazon RDS 用作“缓存”。这使我们能够将任何 Amazon Redshift table 作为 RDS 中的关系提供,而无需显式复制该数据。 Dblink 处理块级别的数据移动。

我们使用了 John 在上面提供的 link 中描述的方法。我们在博客中详细描述了我们是如何做到的 post "Have Your Postgres Cake with Amazon Redshift and eat it, too."

https://www.intermix.io/blog/using-amazon-redshift-with-amazon-rds/

虽然 AWS Redshift 基于 Postgresql,但它有多种 enhancements/alterations 来集成 AWS 基础设施以及与标准 Postgresql 截然不同的后端。为了创建数据库 Link,您不需要(事实上,您不能)加载数据库 Link 扩展。

相反,AWS 已将标准的 Postgresql CREATE SERVER AND IMPORT FOREIGN SCHEMA 语句替换为其独特的 CREATE EXTERNAL SCHEMA - 这会为您创建数据库链接:

CREATE EXTERNAL SCHEMA [IF NOT EXISTS] local_schema_name
FROM { [ DATA CATALOG ] | HIVE METASTORE | POSTGRES | MYSQL | KINESIS }
[ DATABASE 'database_name' ]
[ REGION 'aws-region' ]
[ URI 'hive_metastore_uri' [ PORT port_number ] ]
IAM_ROLE { default | 'arn:aws:iam::<AWS account-id>:role/<role-name>' }
[ SECRET_ARN 'ssm-secret-arn' ]          
[ CATALOG_ROLE 'catalog-role-arn-string' ] 
[ CREATE EXTERNAL DATABASE IF NOT EXISTS ]

这在一条语句中完成了所有事情。可以找到完整的文档 here