테이블 스냅샷 복원
이 문서에서는 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
|
대상 테이블이 포함된 데이터 세트입니다. |
테이블 스냅샷 복원
스냅샷에서 쓰기 가능한 테이블을 만들려면 복사할 테이블 스냅샷과 대상 테이블을 지정합니다. 대상 테이블은 새 테이블일 수 있습니다. 또는 기존 테이블을 테이블 스냅샷으로 덮어쓸 수 있습니다.
새 테이블로 복원
다음 옵션 중 하나를 사용하여 테이블 스냅샷을 새 테이블로 복원할 수 있습니다.
콘솔
Google Cloud 콘솔에서 BigQuery 페이지로 이동합니다.
탐색기 창에서 복원하려는 테이블 스냅샷의 프로젝트 및 데이터 세트 노드를 펼칩니다.
테이블 스냅샷 이름을 클릭합니다.
표시된 테이블 스냅샷 창에서 복원을 클릭합니다.
표시되는 스냅샷 복원 창에 프로젝트, 데이터 세트, 새 테이블의 테이블 정보를 입력합니다.
저장을 클릭합니다.
SQL
CREATE TABLE CLONE
DDL 문을 사용합니다.
Google Cloud 콘솔에서 BigQuery 페이지로 이동합니다.
쿼리 편집기에서 다음 문을 입력합니다.
CREATE TABLE TABLE_PROJECT_ID.TABLE_DATASET_NAME.NEW_TABLE_NAME CLONE SNAPSHOT_PROJECT_ID.SNAPSHOT_DATASET_NAME.SNAPSHOT_NAME;
다음을 바꿉니다.
TABLE_PROJECT_ID
: 새 테이블을 만들 프로젝트의 프로젝트 IDTABLE_DATASET_NAME
: 새 테이블을 만들 데이터 세트의 이름NEW_TABLE_NAME
: 새 테이블 이름SNAPSHOT_PROJECT_ID
: 복원할 스냅샷이 포함된 프로젝트의 프로젝트 IDSNAPSHOT_DATASET_NAME
: 복원할 스냅샷이 포함된 데이터 세트의 이름.SNAPSHOT_NAME
: 복원할 스냅샷의 이름
실행을 클릭합니다.
쿼리를 실행하는 방법에 대한 자세한 내용은 대화형 쿼리 실행을 참조하세요.
bq
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
: 복원할 스냅샷이 포함된 프로젝트의 프로젝트 IDSNAPSHOT_DATASET_NAME
: 복원할 스냅샷이 포함된 데이터 세트의 이름.SNAPSHOT_NAME
: 복원할 스냅샷의 이름TABLE_PROJECT_ID
: 새 테이블을 만들 프로젝트의 프로젝트 IDTABLE_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
: 복원할 스냅샷이 포함된 프로젝트의 프로젝트 IDSNAPSHOT_DATASET_NAME
: 복원할 스냅샷이 포함된 데이터 세트의 이름.SNAPSHOT_NAME
: 복원할 스냅샷의 이름TABLE_PROJECT_ID
: 새 테이블을 만들 프로젝트의 프로젝트 IDTABLE_DATASET_NAME
: 새 테이블을 만들 데이터 세트의 이름NEW_TABLE_NAME
: 새 테이블 이름
만료를 지정하지 않으면 대상 테이블은 대상 테이블이 포함된 데이터 세트의 기본 테이블 만료 시간 이후에 만료됩니다.
기존 테이블 덮어쓰기
다음 옵션 중 하나를 사용하여 기존 테이블을 테이블 스냅샷으로 덮어쓸 수 있습니다.
콘솔
Google Cloud 콘솔에서 BigQuery 페이지로 이동합니다.
탐색기 창에서 복원하려는 테이블 스냅샷의 프로젝트 및 데이터 세트 노드를 펼칩니다.
테이블 스냅샷 이름을 클릭합니다.
표시된 테이블 스냅샷 창에서 복원을 클릭합니다.
표시되는 스냅샷 복원 창에 프로젝트, 데이터 세트, 기존 테이블의 테이블 정보를 입력합니다.
테이블 덮어쓰기(있는 경우)를 선택합니다.
저장을 클릭합니다.
SQL
CREATE TABLE CLONE
DDL 문을 사용합니다.
Google Cloud 콘솔에서 BigQuery 페이지로 이동합니다.
쿼리 편집기에서 다음 문을 입력합니다.
CREATE OR REPLACE TABLE TABLE_PROJECT_ID.TABLE_DATASET_NAME.TABLE_NAME CLONE SNAPSHOT_PROJECT_ID.SNAPSHOT_DATASET_NAME.SNAPSHOT_NAME;
다음을 바꿉니다.
TABLE_PROJECT_ID
: 새 테이블을 만들 프로젝트의 프로젝트 IDTABLE_DATASET_NAME
: 덮어쓰려는 테이블이 포함된 데이터 세트의 이름TABLE_NAME
: 덮어쓰려는 테이블의 이름SNAPSHOT_PROJECT_ID
: 복원할 스냅샷이 포함된 프로젝트의 프로젝트 IDSNAPSHOT_DATASET_NAME
: 복원할 스냅샷이 포함된 데이터 세트의 이름.SNAPSHOT_NAME
: 복원할 스냅샷의 이름
실행을 클릭합니다.
쿼리를 실행하는 방법에 대한 자세한 내용은 대화형 쿼리 실행을 참조하세요.
bq
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
: 복원할 스냅샷이 포함된 프로젝트의 프로젝트 IDSNAPSHOT_DATASET_NAME
: 복원할 스냅샷이 포함된 데이터 세트의 이름.SNAPSHOT_NAME
: 복원할 스냅샷의 이름TABLE_PROJECT_ID
: 새 테이블을 만들 프로젝트의 프로젝트 IDTABLE_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
: 복원할 스냅샷이 포함된 프로젝트의 프로젝트 IDSNAPSHOT_DATASET_NAME
: 복원할 스냅샷이 포함된 데이터 세트의 이름.SNAPSHOT_NAME
: 복원할 스냅샷의 이름TABLE_PROJECT_ID
: 새 테이블을 만들 프로젝트의 프로젝트 IDTABLE_DATASET_NAME
: 덮어쓰려는 테이블이 포함된 데이터 세트의 이름TABLE_NAME
: 덮어쓰려는 테이블의 이름
만료를 지정하지 않으면 대상 테이블은 대상 테이블이 포함된 데이터 세트의 기본 테이블 만료 시간 이후에 만료됩니다.