테이블 스냅샷 복원

이 문서에서는 Google Cloud Console, CREATE TABLE CLONE 쿼리, bq cp 명령어, jobs.insert API를 사용하여 테이블 스냅샷에서 쓰기 가능한 테이블을 복만드는 방법을 설명합니다. 이 문서는 테이블 스냅샷에 익숙한 사용자를 대상으로 합니다.

권한 및 역할

이 섹션에서는 테이블 스냅샷에서 쓰기 가능한 테이블을 만들어야 하는 Identity and Access Management(IAM) 권한과 이러한 권한에 부여하는 사전 정의된 IAM 역할을 설명합니다.

권한

테이블 스냅샷에서 쓰기 가능한 테이블을 만들려면 다음 권한이 필요합니다.

권한 리소스
다음 모든 항목:

bigquery.tables.get
bigquery.tables.getData
bigquery.tables.restoreSnapshot
쓰기 가능한 테이블에 복사할 테이블 스냅샷입니다.
bigquery.tables.create 대상 테이블이 포함된 데이터 세트입니다.

역할

필요한 권한을 제공하는 사전 정의된 BigQuery 역할은 다음과 같습니다.

역할 리소스
다음 중 하나인 경우:

bigquery.dataEditor
bigquery.dataOwner
bigquery.admin
쓰기 가능한 테이블에 복사할 테이블 스냅샷입니다.
다음 중 하나인 경우:

bigquery.dataEditor
bigquery.dataOwner
bigquery.admin
대상 테이블이 포함된 데이터 세트입니다.

테이블 스냅샷 복원

스냅샷에서 쓰기 가능한 테이블을 만들려면 복사할 테이블 스냅샷과 대상 테이블을 지정합니다. 대상 테이블은 새 테이블일 수 있습니다. 또는 기존 테이블을 테이블 스냅샷으로 덮어쓸 수 있습니다.

새 테이블로 복원

예를 들어 다음과 같이 테이블 스냅샷 library_backup.books를 새 테이블 library.books_new로 복원합니다.

Console

  1. Cloud Console에서 BigQuery 페이지로 이동합니다.

    BigQuery로 이동

  2. 탐색기 창에서 복원하려는 테이블 스냅샷의 프로젝트 및 데이터 세트 노드(여기에서는 library_backup.books)를 확장합니다.

  3. 표시된 테이블 스냅샷 창에서 복원을 클릭합니다.

    스냅샷에서 테이블 복원

  4. 표시되는 스냅샷 복원 창에서 대상 테이블에 대한 프로젝트, 데이터 세트 ID, 테이블 이름을 입력합니다.

  5. 테이블 스냅샷의 데이터로 기존 테이블을 덮어쓰려면 테이블이 있으면 덮어쓰기를 선택합니다. 이 옵션을 선택하지 않고 대상 테이블이 이미 있으면 오류가 발생합니다.

  6. 복원을 클릭합니다.

SQL

다음 쿼리를 실행합니다.

CREATE TABLE library.books_new
  CLONE library_backup.books

bq

Cloud Shell에 다음 명령어를 입력합니다.

Cloud Shell로 이동

bq cp --restore --no_clobber library_backup.books library.books_new

--no_clobber 플래그는 대상 테이블이 존재할 경우 명령어가 실패하도록 지시합니다.

API

다음 매개변수를 사용하여 jobs.insert 메서드를 호출합니다.

매개변수
projectId myProject
요청 본문

{
  "configuration": {
    "copy": {
      "sourceTables": [
        {
          "projectId": "myProject",
          "datasetId": "library_backup",
          "tableId": "books"
        }
      ],
      "destinationTable": {
        "projectId": "myProject",
        "datasetId": "library",
        "tableId": "books_new"
      },
      "operationType": "RESTORE",
      "writeDisposition": "WRITE_EMPTY"
    }
  }
}

만료 시간이 지정되지 않았으면 대상 테이블이 포함된 데이터 세트의 기본 테이블 만료 시간이 지난 후 대상 테이블이 만료됩니다. 여기서는 library 데이터 세트에 해당합니다.

기존 테이블 덮어쓰기

다음과 같이 기존 테이블 library.books를 덮어써서 테이블 스냅샷 library_backup.books를 복원합니다.

Console

  1. Cloud Console에서 BigQuery 페이지로 이동합니다.

    BigQuery로 이동

  2. 탐색기 창에서 복원하려는 테이블 스냅샷의 프로젝트 및 데이터 세트 노드(여기에서는 library_backup.books)를 확장합니다.

  3. 표시된 테이블 스냅샷 창에서 복원을 클릭합니다.

    스냅샷에서 테이블 복원

  4. 표시되는 스냅샷 복원 창에서 덮어쓰려는 테이블에 대한 프로젝트, 데이터 세트 ID, 테이블 이름을 입력합니다.

  5. 복원을 클릭합니다.

SQL

다음 쿼리를 실행합니다.

CREATE OR REPLACE TABLE
  library.books
  CLONE library_backup.books

bq

Cloud Shell에 다음 명령어를 입력합니다.

Cloud Shell로 이동

bq cp --restore --force library_backup.books library.books

API

다음 매개변수를 사용하여 jobs.insert 메서드를 호출합니다.

매개변수
projectId myProject
요청 본문

{
  "configuration": {
    "copy": {
      "sourceTables": [
        {
          "projectId": "myProject",
          "datasetId": "library_backup",
          "tableId": "books"
        }
      ],
      "destinationTable": {
        "projectId": "myProject",
        "datasetId": "library",
        "tableId": "books"
      },
      "operationType": "RESTORE",
      "writeDisposition": "WRITE_TRUNCATE"
    }
  }
}

만료 시간이 지정되지 않았으면 대상 테이블이 포함된 데이터 세트의 기본 테이블 만료 시간이 지난 후 대상 테이블이 만료됩니다. 여기서는 library 데이터 세트에 해당합니다.

다음 단계