Compartir vía


UNDROP TABLE

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

El comando UNDROP aborda la preocupación de las tablas administradas o externas ubicadas en Unity Catalog que se quiten o eliminen accidentalmente. De manera predeterminada, este comando quita (recupera) la tabla quitada más recientemente que pertenece al usuario del nombre de tabla especificado. El esquema primario y el catálogo deben existir. Esta característica admite la recuperación de tablas eliminadas dentro de un período de retención de 7 días.

Si hay varias tablas anuladas con el mismo nombre, puede usar SHOW TABLES DROPPED para identificar el identificador de tabla y usar UNDROP TABLE WITH ID para recuperar una tabla específica.

Si hay una tabla con el mismo nombre que la tabla que desea recuperar, use el comando ALTER TABLE RENAME TO para cambiar el nombre de la tabla 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 después de recuperar la tabla.

Sintaxis

UNDROP TABLE { table_name | WITH ID table_id }

Parámetro

  • table_name

    El nombre de la tabla que se va a restaurar. El nombre no debe incluir una especificación temporal. Si la tabla no se puede encontrar, Azure Databricks genera un error.

  • table_id

    Un STRING literal en forma de UUID de la tabla tal y como se muestra en SHOW TABLES DROPPED.

Permisos

UNDROP TABLE requiere uno de los siguientes permisos de base:

  • Un usuario es el propietario de la tabla, 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.

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 tabla anterior. Si es necesario, la propiedad se puede cambiar mediante el comando ALTER TABLE.

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