Поделиться через


Декларация ООН о правах крестьян и других людей, работающих в сельских районах (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, которое необходимо восстановить, является таблицей.

  • 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