영어로 읽기

다음을 통해 공유


유엔 농민권리선언 (UNDROP)

적용 대상:체크표시된 '예' Databricks SQL 체크표시된 '예' Databricks Runtime 12.2 LTS 이상

UNDROP 명령은 Unity 카탈로그에 있는 관리 또는 외부 관계(테이블 또는 구체화된 뷰)가 실수로 삭제되거나 떨어지는 문제를 해결합니다. 기본적으로 이 명령은 지정된 관계 이름의 사용자가 소유한 가장 최근에 삭제된 관계를 삭제(복구)합니다. 부모 스키마 및 카탈로그가 있어야 합니다. 이 기능은 7일 보존 기간 내에 삭제된 관계 복구를 지원합니다.

같은 이름의 삭제된 관계가 여러 개 있는 경우 SHOW TABLES DROPPED 사용하여 테이블 ID를 식별하고 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

    SHOW TABLES DROPPED에 의해 표시되는 관계의 UUID 형식인 STRING 리터럴입니다.

사용 권한

UNDROP 에는 다음 기본 권한 중 하나가 필요합니다.

  • 사용자는 관계의 소유자이며, 스키마에 CREATE TABLEUSE SCHEMA이 있고 카탈로그에 USE CATALOG가 있습니다.
  • 사용자는 스키마의 소유자이며 USE CATALOG 카탈로그에 있습니다.
  • 사용자는 카탈로그의 소유자입니다.
  • 사용자는 메타스토어의 소유자입니다.
  • 사용자는 테이블에 MANAGE를, 스키마에 CREATE TABLEUSE 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