

 从补丁 198 开始，Amazon Redshift 将不再支持创建新的 Python UDF。现有的 Python UDF 将继续正常运行至 2026 年 6 月 30 日。有关更多信息，请参阅[博客文章](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)。

# 跨数据库查询
<a name="cross-database-overview"></a>

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

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

通过使用跨数据库查询，您可以执行以下操作：
+ **跨 Amazon Redshift 集群中的数据库查询数据**。

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

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

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

  您可以从连接到的数据库中写入，也可以从您具有权限的任何其它数据库中写入。

  当您对任何其它未连接的数据库上的数据库对象拥有写入权限时，可以使用跨数据库查询从 Amazon Redshift 集群上的任何数据库写入数据，而无需连接到该特定数据库。这样做有助于您进行复杂的写入操作，同时快速、轻松地联接分布在 Amazon Redshift 集群的多个数据库中的数据。

  还可以在单个查询中联接来自多个数据库的数据集，并使用不同的提取-转换-加载（ETL）或分析工具写入数据。可以继续使用标准 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](r_GRANT.md) 命令为用户和用户组授予权限。当用户不再需要访问特定数据库对象时，您也可以使用 [REVOKE](r_REVOKE.md) 命令撤销权限。
+ **使用元数据和 BI 工具。**

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

  创建外部 schema 引用后，Amazon Redshift 会在 [SVV\$1EXTERNAL\$1TABLES](r_SVV_EXTERNAL_TABLES.md) 和 [SVV\$1EXTERNAL\$1COLUMNS](r_SVV_EXTERNAL_COLUMNS.md) 中的其他数据库的 schema 下显示表，以供工具探索元数据。

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

  以下是显示 Amazon Redshift 集群中所有数据库的所有 Amazon Redshift 对象和外部对象的系统视图：
  + [SVV\$1ALL\$1COLUMNS](r_SVV_ALL_COLUMNS.md)
  + [SVV\$1ALL\$1SCHEMAS](r_SVV_ALL_SCHEMAS.md)
  + [SVV\$1ALL\$1TABLES](r_SVV_ALL_TABLES.md)

  以下是显示 Amazon Redshift 集群中所有数据库的所有 Amazon Redshift 对象的系统视图：
  + [SVV\$1REDSHIFT\$1COLUMNS](r_SVV_REDSHIFT_COLUMNS.md)
  + [SVV\$1REDSHIFT\$1DATABASES](r_SVV_REDSHIFT_DATABASES.md)
  + [SVV\$1REDSHIFT\$1FUNCTIONS](r_SVV_REDSHIFT_FUNCTIONS.md)
  + [SVV\$1REDSHIFT\$1SCHEMAS](r_SVV_REDSHIFT_SCHEMAS.md)
  + [SVV\$1REDSHIFT\$1TABLES](r_SVV_REDSHIFT_TABLES.md)

**Topics**
+ [注意事项](cross-database_usage.md)
+ [限制](cross-database_limitation.md)
+ [跨数据库查询示例](cross-database_example.md)
+ [将跨数据库查询与查询编辑器结合使用](cross-database_console.md)