跨数据库查询 - Amazon Redshift
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

跨数据库查询

本主题介绍跨数据库查询,即对单个 Amazon Redshift 集群中的多个 Amazon Redshift 数据库进行操作的查询。

通过使用 Amazon Redshift 中的跨数据库查询,您可以在 Amazon Redshift 集群中跨数据库进行查询。通过跨数据库查询,您可以从 Amazon Redshift 集群中的任何数据库查询数据,而无论您连接到哪个数据库。跨数据库查询消除了数据副本并简化了数据组织,从而可以支持同一数据仓库中的多个业务组。

通过使用跨数据库查询,您可以执行以下操作:

  • 跨 Amazon Redshift 集群中的数据库查询数据

    您不仅可以从连接到的数据库进行查询,还可以从您有权访问的任何其他数据库中读取。

    查询任何其他未连接的数据库上的数据库对象时,您只有对这些数据库对象的读取访问权限。您可以使用跨数据库查询访问 Amazon Redshift 集群上任何数据库中的数据,而无需连接到该特定数据库。这样做可以帮助您快速、轻松地查询和联接跨 Amazon Redshift 集群中的多个数据库分布的数据。

    您还可以在单个查询中联接多个数据库的数据集,并使用业务情报 (BI) 或分析工具分析数据。您可以继续使用标准 Amazon Redshift SQL 命令为用户设置精细表级别的访问控制。通过这样做,您可以帮助确保用户只能看到他们拥有权限的数据的相关子集。

  • 查询对象

    您可以使用用三部分表示法表示的完全限定对象名来查询其他数据库对象。任何数据库对象的完整路径均由三个组成部分组成:数据库名称、schema 和对象的名称。您可以使用完整路径表示法 database_name.schema_name.object_name 从任何其他数据库访问任何对象。要访问特定列,请使用database_name.schema_name.object_name.column_name

    您还可以使用外部 schema 表示法为另一个数据库中的 schema 创建别名。此外部 schema 引用另一个数据库和 schema 对。查询可以使用外部 schema 表示法 external_schema_name.object_name 访问其他数据库对象。

    在同一个只读查询中,您可以查询各种数据库对象,如用户表、常规视图、具体化视图和来自其他数据库的后期绑定视图。

  • 管理权限

    对 Amazon Redshift 集群中任何数据库中的对象具有访问权限的用户可以查询这些对象。您可以使用 GRANT 命令为用户和用户组授予权限。当用户不再需要访问特定数据库对象时,您也可以使用 REVOKE 命令撤销权限。

  • 使用元数据和 BI 工具。

    您可以创建一个外部 schema,以引用同一 Amazon Redshift 集群内另一个 Amazon Redshift 数据库中的 schema。要了解信息,请参阅 CREATE EXTERNAL SCHEMA 命令。

    创建外部 schema 引用后,Amazon Redshift 会在 SVV_EXTERNAL_TABLESSVV_EXTERNAL_COLUMNS 中的其他数据库的 schema 下显示表,以供工具探索元数据。

    要将跨数据库查询与 BI 工具集成,您可以使用以下系统视图。这些功能可帮助您查看 Amazon Redshift 集群上连接数据库和其他数据库中的对象元数据的相关信息。

    以下是显示 Amazon Redshift 集群中所有数据库的所有 Amazon Redshift 对象和外部对象的系统视图:

    以下是显示 Amazon Redshift 集群中所有数据库的所有 Amazon Redshift 对象的系统视图: