

 从补丁 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="working-with-snapshot-restore-table-from-snapshot"></a>

您可以从快照还原单个表而不是还原整个集群。在从快照还原单个表时，您需要指定源快照、数据库、架构和表名，以及目标数据库、架构和已还原表的新表名。

**注意**  
RA3 预调配集群和 Amazon Redshift Serverless 工作组不支持无备份表。在 RA3 集群和 Serverless 工作组中标记为无备份的表将被视为永久表，在拍摄快照时将始终对其进行备份，并在从快照还原时还原该表。但是，不支持选择性还原无备份表。

新表名不能是现有表的名称。要将现有表替换为从快照还原的表，请先重命名或删除现有表，然后再从快照还原表。

使用源表的列定义、表属性和列属性（外键除外）创建目标表。为了防止因依赖项而导致发生冲突，目标表不从源表继承外键。不向目标表应用任何依赖项（例如，源表上的视图或授予的权限）。

如果源表的拥有者存在，那么该数据库用户是已还原的表的拥有者，前提是该用户拥有足够的权限，可成为指定的数据库和模式中关系的拥有者。否则，已还原的表由在启动集群时创建的管理员用户所有。

已还原的表将返回在执行备份时其所处的状态。这包括由 Amazon Redshift 对[可序列化隔离](https://docs.aws.amazon.com/redshift/latest/dg/c_serial_isolation.html)的符合性定义的事务可见性规则，这意味着数据将立即对在备份后启动的进行中事务可见。

从快照还原表受以下限制：
+ 您只能将表还原到当前正在运行的活动集群，并且只能从针对该集群制作的快照还原表。
+ 一次只能还原一个表。
+ 无法从在调整集群大小之前拍摄的集群快照还原表。一个例外是，如果节点类型没有更改，则可以在弹性大小调整后还原表。
+ 不向目标表应用任何依赖项（例如，源表上的视图或授予的权限）。
+ 如果为正在还原的表启用行级安全性，Amazon Redshift 将还原已启用行级安全性的表。

**从快照还原表**

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

1. 在导航菜单上，选择**集群**，然后选择还原表要使用的集群。

1. 对于**操作**，请选择**还原表**以便显示**还原表**页面。

1. 输入要使用的快照、源表和目标表的相关信息，然后选择**还原表**。

**Example 示例：使用 AWS CLI 从快照中还原表**  
以下示例使用 `restore-table-from-cluster-snapshot` AWS CLI 命令从 `my-source-table` 上的 `sample-database` 架构中还原 `my-snapshot-id` 表。您可以使用 AWS CLI 命令 `describe-table-restore-status` 查看还原操作的状态。此示例将快照还原到具有新表名 `mycluster-example` 的 `my-new-table` 集群。  

```
aws redshift restore-table-from-cluster-snapshot --cluster-identifier mycluster-example 
                                                 --new-table-name my-new-table 
                                                 --snapshot-identifier my-snapshot-id 
                                                 --source-database-name sample-database 
                                                 --source-table-name my-source-table
```