테이블 스냅샷 복원

이 문서에서는 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
대상 테이블이 포함된 데이터 세트입니다.

테이블 스냅샷 복원

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

새 테이블로 복원

다음 옵션 중 하나를 사용하여 테이블 스냅샷을 새 테이블로 복원할 수 있습니다.

콘솔

  1. Google Cloud 콘솔에서 BigQuery 페이지로 이동합니다.

    BigQuery로 이동

  2. 탐색기 창에서 복원하려는 테이블 스냅샷의 프로젝트 및 데이터 세트 노드를 펼칩니다.

  3. 테이블 스냅샷 이름을 클릭합니다.

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

    스냅샷에서 테이블 복원

  5. 표시되는 스냅샷 복원 창에 프로젝트, 데이터 세트, 새 테이블의 테이블 정보를 입력합니다.

  6. 저장을 클릭합니다.

SQL

CREATE TABLE CLONE DDL 문을 사용합니다.

  1. Google Cloud 콘솔에서 BigQuery 페이지로 이동합니다.

    BigQuery로 이동

  2. 쿼리 편집기에서 다음 문을 입력합니다.

    CREATE TABLE TABLE_PROJECT_ID.TABLE_DATASET_NAME.NEW_TABLE_NAME
    CLONE SNAPSHOT_PROJECT_ID.SNAPSHOT_DATASET_NAME.SNAPSHOT_NAME;
    

    다음을 바꿉니다.

    • TABLE_PROJECT_ID: 새 테이블을 만들 프로젝트의 프로젝트 ID
    • TABLE_DATASET_NAME: 새 테이블을 만들 데이터 세트의 이름
    • NEW_TABLE_NAME: 새 테이블 이름
    • SNAPSHOT_PROJECT_ID: 복원할 스냅샷이 포함된 프로젝트의 프로젝트 ID
    • SNAPSHOT_DATASET_NAME: 복원할 스냅샷이 포함된 데이터 세트의 이름.
    • SNAPSHOT_NAME: 복원할 스냅샷의 이름

  3. 실행을 클릭합니다.

쿼리를 실행하는 방법에 대한 자세한 내용은 대화형 쿼리 실행을 참조하세요.

bq

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

Cloud Shell로 이동

bq cp \
--restore \
--no_clobber \
SNAPSHOT_PROJECT_ID:SNAPSHOT_DATASET_NAME.SNAPSHOT_NAME \
TABLE_PROJECT_ID:TABLE_DATASET_NAME.NEW_TABLE_NAME

다음을 바꿉니다.

  • SNAPSHOT_PROJECT_ID: 복원할 스냅샷이 포함된 프로젝트의 프로젝트 ID
  • SNAPSHOT_DATASET_NAME: 복원할 스냅샷이 포함된 데이터 세트의 이름.
  • SNAPSHOT_NAME: 복원할 스냅샷의 이름
  • TABLE_PROJECT_ID: 새 테이블을 만들 프로젝트의 프로젝트 ID
  • TABLE_DATASET_NAME: 새 테이블을 만들 데이터 세트의 이름
  • NEW_TABLE_NAME: 새 테이블 이름

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

API

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

매개변수
projectId 이 작업에 대한 요금을 청구할 프로젝트의 프로젝트 ID
요청 본문

{
  "configuration": {
    "copy": {
      "sourceTables": [
        {
          "projectId": "SNAPSHOT_PROJECT_ID",
          "datasetId": "SNAPSHOT_DATASET_NAME",
          "tableId": "SNAPSHOT_NAME"
        }
      ],
      "destinationTable": {
        "projectId": "TABLE_PROJECT_ID",
        "datasetId": "TABLE_DATASET_NAME",
        "tableId": "NEW_TABLE_NAME"
      },
      "operationType": "RESTORE",
      "writeDisposition": "WRITE_EMPTY"
    }
  }
}

다음을 바꿉니다.

  • SNAPSHOT_PROJECT_ID: 복원할 스냅샷이 포함된 프로젝트의 프로젝트 ID
  • SNAPSHOT_DATASET_NAME: 복원할 스냅샷이 포함된 데이터 세트의 이름.
  • SNAPSHOT_NAME: 복원할 스냅샷의 이름
  • TABLE_PROJECT_ID: 새 테이블을 만들 프로젝트의 프로젝트 ID
  • TABLE_DATASET_NAME: 새 테이블을 만들 데이터 세트의 이름
  • NEW_TABLE_NAME: 새 테이블 이름

만료를 지정하지 않으면 대상 테이블은 대상 테이블이 포함된 데이터 세트의 기본 테이블 만료 시간 이후에 만료됩니다.

기존 테이블 덮어쓰기

다음 옵션 중 하나를 사용하여 기존 테이블을 테이블 스냅샷으로 덮어쓸 수 있습니다.

콘솔

  1. Google Cloud 콘솔에서 BigQuery 페이지로 이동합니다.

    BigQuery로 이동

  2. 탐색기 창에서 복원하려는 테이블 스냅샷의 프로젝트 및 데이터 세트 노드를 펼칩니다.

  3. 테이블 스냅샷 이름을 클릭합니다.

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

    스냅샷에서 테이블 복원

  5. 표시되는 스냅샷 복원 창에 프로젝트, 데이터 세트, 기존 테이블의 테이블 정보를 입력합니다.

  6. 테이블 덮어쓰기(있는 경우)를 선택합니다.

  7. 저장을 클릭합니다.

SQL

CREATE TABLE CLONE DDL 문을 사용합니다.

  1. Google Cloud 콘솔에서 BigQuery 페이지로 이동합니다.

    BigQuery로 이동

  2. 쿼리 편집기에서 다음 문을 입력합니다.

    CREATE OR REPLACE TABLE TABLE_PROJECT_ID.TABLE_DATASET_NAME.TABLE_NAME
    CLONE SNAPSHOT_PROJECT_ID.SNAPSHOT_DATASET_NAME.SNAPSHOT_NAME;
    

    다음을 바꿉니다.

    • TABLE_PROJECT_ID: 새 테이블을 만들 프로젝트의 프로젝트 ID
    • TABLE_DATASET_NAME: 덮어쓰려는 테이블이 포함된 데이터 세트의 이름
    • TABLE_NAME: 덮어쓰려는 테이블의 이름
    • SNAPSHOT_PROJECT_ID: 복원할 스냅샷이 포함된 프로젝트의 프로젝트 ID
    • SNAPSHOT_DATASET_NAME: 복원할 스냅샷이 포함된 데이터 세트의 이름.
    • SNAPSHOT_NAME: 복원할 스냅샷의 이름

  3. 실행을 클릭합니다.

쿼리를 실행하는 방법에 대한 자세한 내용은 대화형 쿼리 실행을 참조하세요.

bq

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

Cloud Shell로 이동

bq cp \
--restore \
--force \
SNAPSHOT_PROJECT_ID:SNAPSHOT_DATASET_NAME.SNAPSHOT_NAME \
TABLE_PROJECT_ID:TABLE_DATASET_NAME.TABLE_NAME

다음을 바꿉니다.

  • SNAPSHOT_PROJECT_ID: 복원할 스냅샷이 포함된 프로젝트의 프로젝트 ID
  • SNAPSHOT_DATASET_NAME: 복원할 스냅샷이 포함된 데이터 세트의 이름.
  • SNAPSHOT_NAME: 복원할 스냅샷의 이름
  • TABLE_PROJECT_ID: 새 테이블을 만들 프로젝트의 프로젝트 ID
  • TABLE_DATASET_NAME: 덮어쓰려는 테이블이 포함된 데이터 세트의 이름
  • TABLE_NAME: 덮어쓰려는 테이블의 이름

API

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

매개변수
projectId 이 작업에 대한 요금을 청구할 프로젝트의 프로젝트 ID
요청 본문

{
  "configuration": {
    "copy": {
      "sourceTables": [
        {
          "projectId": "SNAPSHOT_PROJECT_ID",
          "datasetId": "SNAPSHOT_DATASET_NAME",
          "tableId": "SNAPSHOT_NAME"
        }
      ],
      "destinationTable": {
        "projectId": "TABLE_PROJECT_ID",
        "datasetId": "TABLE_DATASET_NAME",
        "tableId": "TABLE_NAME"
      },
      "operationType": "RESTORE",
      "writeDisposition": "WRITE_TRUNCATE"
    }
  }
}

다음을 바꿉니다.

  • SNAPSHOT_PROJECT_ID: 복원할 스냅샷이 포함된 프로젝트의 프로젝트 ID
  • SNAPSHOT_DATASET_NAME: 복원할 스냅샷이 포함된 데이터 세트의 이름.
  • SNAPSHOT_NAME: 복원할 스냅샷의 이름
  • TABLE_PROJECT_ID: 새 테이블을 만들 프로젝트의 프로젝트 ID
  • TABLE_DATASET_NAME: 덮어쓰려는 테이블이 포함된 데이터 세트의 이름
  • TABLE_NAME: 덮어쓰려는 테이블의 이름

만료를 지정하지 않으면 대상 테이블은 대상 테이블이 포함된 데이터 세트의 기본 테이블 만료 시간 이후에 만료됩니다.

다음 단계