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


ТАБЛИЦА UNDROP

Область применения: флажок Databricks SQL флажок Databricks Runtime 12.2 LTS и выше

Команда UNDROP решает проблему случайного сброса или удаления управляемых либо внешних таблиц, расположенных в каталоге Unity. По умолчанию эта команда отменяет (восстанавливает) последнюю сброшенную таблицу, принадлежащую пользователю с заданным именем таблицы. Должны существовать родительская схема и каталог. Эта функция поддерживает восстановление сброшенных таблиц в течение 7 дней периода хранения.

При наличии нескольких удаленных таблиц с одинаковым именем можно использовать show TABLE DROPPED для идентификации идентификатора таблицы и использования UNDROP TABLE WITH ID для восстановления определенной таблицы.

Если есть таблица с тем же именем, что и таблица, которую вы хотите восстановить, используйте команду ALTER TABLE RENAME TO , чтобы изменить имя существующей таблицы.

Будут восстановлены метаданные таблицы, такие как привилегии таблицы, спецификация столбцов и свойства. Ограничения первичного и внешнего ключа не восстанавливаются командой UNDROP . Повторно создайте их вручную с помощью ALTER TABLE ADD CONSTRAINT после восстановления таблицы.

Синтаксис

UNDROP TABLE { table_name | WITH ID table_id }

Параметр

  • table_name

    Имя восстановленной таблицы. Имя не должно содержать временную спецификацию. Если не удается найти таблицу Azure Databricks, возникает ошибка.

  • table_id

    Литерал STRING в виде идентификатора UUID таблицы, отображаемой в show TABLE DROPPED.

Разрешения

UNDROP TABLE требуется одно из следующих базовых разрешений:

  • Пользователь является владельцем таблицы, имеет CREATE TABLE схему USE CATALOG и USE SCHEMA в каталоге.
  • Пользователь является владельцем схемы и имеет 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