

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

# 在 Amazon Redshift 中从数据共享创建数据库
从数据共享创建数据库

借助 Amazon Redshift，您可以使用数据共享来创建数据库，然后跨生产者集群中的数据共享来查询数据，从而安全地访问实时数据，而无需复制或传输数据。以下步骤详细介绍了在 Amazon Redshift 环境中设置数据库的过程。

------
#### [ Console ]

在查询数据共享中的数据之前，必须从数据共享中创建一个数据库。您只能从指定的数据共享中创建一个数据库。

1. 登录到 Amazon Web Services 管理控制台并打开 Amazon Redshift 控制台，网址：[https://console.aws.amazon.com/redshiftv2/](https://console.amazonaws.cn/redshiftv2/)。

1. 在导航菜单上，选择**集群**，然后选择您的集群。此时会显示集群详细信息页面。

1. 选择**数据共享**。此时将会显示数据共享列表。

1. 在**来自其他集群的数据共享**部分中，选择**连接到数据库**。有关更多信息，请参阅 [连接到数据库](connect-database-console.md)。

1. 选择要从中创建数据库的数据共享，然后选择**从数据共享中创建数据库**。此时将显示“从数据共享创建数据库”页面。

1. 在**数据库名称**中，指定数据库名称。数据库名称必须为 1-64 个字母数字字符（仅限小写），且不能是保留字。

1. 选择**创建**。

创建数据库后，您可以查询数据库中的数据或执行写入操作，前提是这些操作已由使用者管理员授予、授权和关联。

------
#### [ API ]

要以使用者管理员的身份共享数据以供读取，请执行以下步骤。

1. 列出可供您使用的数据共享并查看数据共享的内容。有关更多信息，请参阅[DESC DATASHARE](r_DESC_DATASHARE.md)和[SHOW DATASHARES](r_SHOW_DATASHARES.md)。

   以下示例显示指定创建器命名空间的入站数据共享的信息。当您以使用者管理员身份运行 DESC DATASHARE 时，您必须指定 NAMESPACE 选项才能查看入站数据共享。

   ```
   DESC DATASHARE salesshare OF NAMESPACE '13b8833d-17c6-4f16-8fe4-1a018f5ed00d';
   
   
    producer_account  |          producer_namespace          | share_type | share_name | object_type |           object_name           |   include_new
   -------------------+--------------------------------------+------------+------------+-------------+---------------------------------+------------------
    123456789012      | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | INBOUND    | salesshare | table       | public.tickit_users_redshift    |     
    123456789012      | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | INBOUND    | salesshare | table       | public.tickit_venue_redshift    |     
    123456789012      | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | INBOUND    | salesshare | table       | public.tickit_category_redshift |
    123456789012      | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | INBOUND    | salesshare | table       | public.tickit_date_redshift     |
    123456789012      | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | INBOUND    | salesshare | table       | public.tickit_event_redshift    |
    123456789012      | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | INBOUND    | salesshare | table       | public.tickit_listing_redshift  |
    123456789012      | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | INBOUND    | salesshare | table       | public.tickit_sales_redshift    |
    123456789012      | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | INBOUND    | salesshare | schema      | public                          |    
    123456789012      | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | INBOUND    | salesshare | view        | public.sales_data_summary_view  |
   ```

   只有集群超级用户才可以执行此操作。您还可以使用 SVV\$1DATASHARES 查看数据共享，使用 SVV\$1DATASHARE\$1OBJECTS 查看数据共享内的对象。

   以下示例显示使用者集群中的入站数据共享。

   ```
   SHOW DATASHARES LIKE 'sales%';
   
   
    share_name | share_owner | source_database | consumer_database | share_type | createdate | is_publicaccessible | share_acl | producer_account |          producer_namespace
   ------------+-------------+-----------------+-------------------+------------+------------+---------------------+-----------+------------------+--------------------------------------
    salesshare |             |                 |                   | INBOUND    |            |         t           |           |   123456789012   | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d
   ```

1. 作为数据库超级用户，您可以创建引用数据共享的本地数据库。有关更多信息，请参阅 [CREATE DATABASE](r_CREATE_DATABASE.md)。

   ```
   CREATE DATABASE sales_db FROM DATASHARE salesshare OF NAMESPACE '13b8833d-17c6-4f16-8fe4-1a018f5ed00d';
   ```

   如果您想更精细地控制对本地数据库中对象的访问权限，请在创建数据库时使用 WITH PERMISSIONS 子句。这允许您在步骤 4 中为数据库中的对象授予对象级权限。

   ```
   CREATE DATABASE sales_db WITH PERMISSIONS FROM DATASHARE salesshare OF NAMESPACE '13b8833d-17c6-4f16-8fe4-1a018f5ed00d';
   ```

   您可以通过查询 [SVV\$1REDSHIFT\$1DATABASES](r_SVV_REDSHIFT_DATABASES.md) 视图查看从数据共享中创建的数据库。您可以直接连接到这些数据库，也可以连接到使用者集群上的本地数据库，然后执行跨数据库查询，从数据共享数据库中查询数据。
**注意**  
您不能基于从现有数据共享创建的数据库对象创建数据共享。但是，您可以将数据复制到使用者集群上的单独表中，执行所需的任何处理，然后共享创建的新对象。

   您还可以使用 Amazon Redshift 控制台从数据共享中创建数据库。有关更多信息，请参阅 [通过数据共享创建数据库](query-datashare-console.md#create-database-from-datashare-console)。

------