Декларация ООН о правах крестьян и других людей, работающих в сельских районах (UNDROP)
Область применения: Databricks SQL
Databricks Runtime 12.2 LTS и выше
Команда UNDROP
предотвращает риск случайного удаления или уничтожения управляемых или внешних объектов (таблиц или материализованных представлений), расположенных в Unity Catalog.
По умолчанию эта команда отменяет (восстанавливает) последнее удаленное отношение, принадлежающее пользователю заданного имени отношения.
Должны существовать родительская схема и каталог. Эта функция поддерживает восстановление удалённых связей в течение 7-дневного периода хранения данных.
При наличии нескольких удаленных связей с одинаковым именем можно использовать SHOW TABLES DROPPED для идентификации идентификатора таблицы и использования UNDROP TABLE WITH ID
для восстановления определенной связи.
Если имеется отношение с тем же именем, что и отношение, которое требуется восстановить, используйте команду ALTER TABLE RENAME TO, чтобы изменить имя существующего отношения.
Будут восстановлены метаданные таблицы, такие как привилегии таблицы, спецификация столбцов и свойства.
Ограничения первичного и внешнего ключа не восстанавливаются командой UNDROP
.
Повторно создайте их вручную с помощью ALTER TABLE ADD CONSTRAINT после восстановления таблицы.
Синтаксис
UNDROP { MATERIALIZED VIEW | TABLE } { relation_name | WITH ID relation_id }
Параметр
MATERIALIZED VIEW
применяется:
Databricks SQL
Databricks Runtime 16.2 и выше
Указывается, что отношение
relation_name
, которое необходимо восстановить, является материализованным представлением.TABLE
Указывает, что отношение
relation_name
, которое необходимо восстановить, является таблицей.-
Имя таблицы или материализованного представления, которое необходимо восстановить. Имя не должно включать спецификацию параметров или темпоральную спецификацию. Если отношение или тип не могут быть найдены в соответствии с указанными критериями, Azure Databricks вызывает ошибку
WRONG_COMMAND_FOR_OBJECT_TYPE
илиTABLE_OR_VIEW_NOT_FOUND
. relation_id
STRING
литерал в форме UUID связи, отображаемой с помощью SHOW TABLES DROPPED.
Разрешения
UNDROP
требуется одно из следующих базовых разрешений:
- Пользователь является владельцем отношения, имеет
CREATE TABLE
иUSE SCHEMA
на схеме, а такжеUSE CATALOG
в каталоге. - Пользователь является владельцем схемы и имеет
USE CATALOG
в каталоге. - Пользователь является владельцем каталога.
- Пользователь является владельцем хранилища метаданных.
- Пользователь имеет
MANAGE
в таблице,CREATE TABLE
иUSE SCHEMA
в схеме, а такжеUSE CATALOG
в каталоге.
Если пользователь восстанавливает другую таблицу другого типа, применяются дополнительные разрешения.
Например, чтобы отменить удаление внешней таблицы, необходимо также иметь CREATE EXTERNAL TABLE
данные внешнего расположения или хранилища, которые должны существовать.
После выполнения этой команды право собственности по умолчанию возвращается предыдущему владельцу связи. При необходимости можно изменить владение с помощью команды ALTER TABLE или ALTER MATERIALIZED VIEW.
Примеры
-- 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
—- Create some MVs within a DLT pipeline
> CREATE MATERIALIZED VIEW mv1 AS SELECT * FROM RANGE(5);
> CREATE MATERIALIZED VIEW mv2 AS SELECT * FROM mv1;
—- Drop the MVs
> DROP MATERIALIZED VIEW mv1;
> DROP MATERIALIZED VIEW mv2;
-- UNDROP using the table name
> UNDROP MATERIALIZED VIEW mv1;
OK
-- UNDROP WITH ID
–- Use SHOW TABLES DROPPED to find the dropped mv2’s tableId
—- Assume it is 6ca7be55-8f58-47a7-85ee-7a59082fd17a
-- When undropping, note that the table id will be a string surrounded by single quotation marks.
> UNDROP MATERIALIZED VIEW WITH ID '6ca7be55-8f58-47a7-85ee-7a59082fd17a';
OK