Compartir a través de


UNDROP

Se aplica a:casilla marcada como sí Databricks SQL casilla marcada como Sí Databricks Runtime 12.2 LTS y versiones posteriores

El UNDROP comando aborda la preocupación de las relaciones administradas o externas (tablas o vistas materializadas) ubicadas en el catálogo de Unity que se quitan o eliminan accidentalmente. De manera predeterminada, este comando anula (recupera) la relación eliminada más recientemente propiedad del usuario del nombre de relación especificado. El esquema primario y el catálogo deben existir. Esta característica admite la recuperación de relaciones eliminadas dentro de un período de retención de 7 días.

Si hay varias relaciones descartadas del mismo nombre, puede usar SHOW TABLES DROPPED para identificar el identificador de tabla y usar UNDROP TABLE WITH ID para recuperar una relación específica.

Si hay una relación con el mismo nombre que la relación que desea recuperar, use ALTER TABLE el comando RENAME TO para cambiar el nombre de la relación existente.

Los metadatos de tabla (como los privilegios de tabla, las especificaciones de columna y las propiedades) se recuperarán. El comando UNDROP no recupera las restricciones de clave principal y de referencia. Vuelva a crearlas manualmente mediante ALTER TABLE ADD CONSTRAINT una vez recuperada la tabla.

Sintaxis

UNDROP { MATERIALIZED VIEW | TABLE } { relation_name | WITH ID relation_id }

Parámetro

  • MATERIALIZED VIEW

    Se aplica a:marcado como sí Databricks SQL marcado como sí Databricks Runtime 16.2 y versiones posteriores

    Especifica que la relación relation_name que se va a restaurar es una vista materializada.

  • TABLE

    Especifica que la relación relation_name que se va a restaurar es una tabla.

  • relation_name

    Nombre de la tabla o vista materializada que se va a restaurar. El nombre no debe incluir una especificación temporal ni una especificación de opciones. Si la relación o el tipo no se encuentran como especificados, Azure Databricks genera WRONG_COMMAND_FOR_OBJECT_TYPE o TABLE_OR_VIEW_NOT_FOUND.

  • relation_id

    Literal STRING en forma de UUID de la relación tal como se muestra en SHOW TABLES DROPPED.

Permisos

UNDROP requiere uno de los siguientes permisos de base:

  • Un usuario es el propietario de la relación, tiene CREATE TABLE y USE SCHEMA en el esquema y USE CATALOG en el catálogo.
  • Un usuario es el propietario del esquema y tiene USE CATALOG en el catálogo.
  • Un usuario es el propietario del catálogo.
  • Un usuario es el propietario del metastore.
  • Un usuario tiene MANAGE en la tabla, CREATE TABLE y USE SCHEMA en el esquema y USE CATALOG en el catálogo.

Si un usuario está recuperando un tipo diferente de tabla, se aplican permisos adicionales. Por ejemplo, para anular una tabla externa, también debe tener CREATE EXTERNAL TABLE en la ubicación externa o en la credencial de almacenamiento, que debe existir.

Después de ejecutar este comando, el valor predeterminado de propiedad es el propietario de la relación anterior. Si es necesario, la propiedad se puede cambiar mediante el ALTER TABLE comando o ALTER MATERIALIZED VIEW .

Limitaciones

Las vistas materializadas y las tablas de streaming solo se pueden restaurar si la canalización de respaldo todavía existe. Si se ha eliminado la canalización de respaldo, la vista materializada o la tabla de streaming no se podrán recuperar.

No se puede restaurar una vista materializada ni una tabla de streaming creada con Databricks SQL. Solo se pueden restaurar las vistas materializadas o las tablas de streaming creadas con una canalización ETL.

Ejemplos

-- 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
> 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