UNDROP TABLE
适用于: Databricks SQL Databricks Runtime 12.2 LTS 及更高版本
UNDROP
命令解决了意外删除 Unity Catalog 中的托管表或外部表的问题。
默认情况下,此命令会取消删除(恢复)由给定表名的用户拥有的、最近已删除的表。
父架构和目录必须存在。 此功能支持恢复已删除的、未超过 7 天保留期的表。
如果删除了多个同名的表,你可以使用 SHOW TABLES DROPPED 来识别表 ID,然后使用 UNDROP TABLE WITH ID
恢复特定的表。
如果存在与要恢复的表同名的表,请使用 ALTER TABLE RENAME TO 命令更改现有表的名称。
将恢复表元数据,例如表权限、列规范和属性。
UNDROP
命令无法恢复主键和外键约束。
恢复表后,使用 ALTER TABLE ADD CONSTRAINT 手动重新创建这些表。
语法
UNDROP TABLE { table_name | WITH ID table_id }
参数
-
要还原的表的名称。 名称不得包含时态规范或选项规范。 如果找不到该表,Azure Databricks 会引发错误。
table_id
一个
STRING
文本,采用 SHOW TABLES DROPPED 显示的表的 UUID 格式。
权限
UNDROP TABLE
需要以下基本权限之一:
- 用户是表的所有者,对架构拥有
CREATE TABLE
和USE SCHEMA
权限,对目录拥有USE CATALOG
权限。 - 用户是架构的所有者,对目录拥有
USE CATALOG
。 - 用户是目录的所有者。
- 用户是元存储的所有者。
如果用户恢复不同类型的表,则还需要其他权限。
例如,要取消删除外部表,你还必须对外部位置或存储凭据(必须存在)拥有 CREATE EXTERNAL TABLE
权限。
运行此命令后,所有权默认为之前的表所有者。
如果需要,可以使用 ALTER TABLE
命令更改所有权。
示例
-- UNDROP using the table name
> CREATE TABLE my_catalog.my_schema.my_table (id INT, name STRING);
> DROP TABLE my_catalog.my_schema.my_table;
> UNDROP TABLE my_catalog.my_schema.my_table;
OK
-- UNDROP WITH ID
- Use SHOW TABLES DROPPED to find dropped tables
> SHOW TABLES DROPPED IN my_schema;
catalogname schemaname tablename tableid tabletype deletedat createdat updatedat createdby owner comment
----------- ---------- ---------- ------------------------------------ --------- ----------------------------- ----------------------------- ----------------------------- ------------- ------------- -------
my_catalog my_schema my_table 6ca7be55-8f58-47a7-85ee-7a59082fd17a managed 2023-05-03 AD at 18:17:56 UTC 2023-05-03 AD at 18:17:00 UTC 2023-05-03 AD at 18:17:00 UTC alf@melmak.et alf@melmak.et
my_catalog my_schema my_table b819f397-c51f-4e60-8acc-05d4d4a7e084 managed 2023-05-04 AD at 10:20:00 UTC 2023-05-04 AD at 08:20:00 UTC 2023-05-04 AD at 08:20:00 UTC alf@melmak.et alf@melmak.et
-- Undrop a specific dropped table.
-- Here, we undrop my_table with table id '6ca7be55-8f58-47a7-85ee-7a59082fd17a'.
-- Note that the table id will be a string surrounded by single quotation marks.
> UNDROP TABLE WITH ID '6ca7be55-8f58-47a7-85ee-7a59082fd17a';
OK
- Continuing from the example above, Now we want to undrop table with ID 'b819f397-c51f-4e60-8acc-05d4d4a7e084'.
- First, we rename the existing table
> ALTER TABLE my_table RENAME TO my_other_table
OK
- Then we can undrop table with the name my_table
> UNDROP TABLE WITH ID 'b819f397-c51f-4e60-8acc-05d4d4a7e084'
OK