2014-12-18 4 views

답변

22

BigQuery의 삭제 취소는 테이블 복사 및 스냅 샷 데코레이터를 통해 가능합니다. 즉, 테이블이 삭제되기 전에 테이블의 스냅 샷을 복사 할 수 있습니다.

이주의 사항 몇 가지가 있습니다

  1. 당신은 두 단계로이 작업을 수행해야합니다; 먼저 테이블의 스냅 샷을 두 번째 테이블에 복사하십시오. 그런 다음 두 번째 테이블을 원래 위치로 다시 복사 할 수 있습니다.
  2. 마지막으로 일 이내에 삭제 된 테이블 만 삭제 취소 할 수 있습니다.
  3. 같은 이름의 테이블을 다시 만든 경우 이전 테이블을 삭제 취소 할 수 없습니다.

여기에 bq을 사용하는 예가 있지만 BigQuery 웹 UI에서 동일한 작업을 수행 할 수 있습니다.

우선의 우리가 삭제하는거야 더미의 BigQuery 데이터 세트와 테이블을 만들 수 : 테이블이 살아있을 때 이제

$ bq mk -d dataset1 
Dataset 'helixdata2:dataset1' successfully created. 
$ bq query --destination_table=dataset1.table1 "SELECT 17 as a" 
Waiting on bqjob_ra0dedbee5cb4228_0000014a5af133d6_1 ... (0s) 
Current status: DONE 
+----+ 
| a | 
+----+ 
| 17 | 
+----+ 

는 한 번에서 현재 유닉스 타임 스탬프를 잡아.

$ date +%s 
1418864998 

이 시간은 초입니다. 밀리 초가 필요합니다.

'실수'테이블

$ bq rm dataset1.table1 
rm: remove table 'helixdata2:dataset1.table1'? (y/N) y 

이제 우리는 스냅 샷을 복사하여 테이블을 취소 할 수 있습니다 제거 :

$ bq cp [email protected] dataset1.temp 
Waiting on bqjob_r4d8174e2e41ae73_0000014a5af2a028_1 ... (0s) 
    Current status: DONE  
Tables 'helixdata2:[email protected]' successfully copied to  
    'helixdata2:dataset1.temp' 

(우리가 밀리 초를 원하기 때문에 우리가 1000 시간을 곱한 주) 이 테이블의 이전 스냅 샷을 dataset1.temp에 복사했습니다. 다시 이전 위치로 복사 한 다음 임시 테이블을 제거하십시오.

$ bq cp dataset1.temp dataset1.table1 
Waiting on bqjob_r3c0bb9302fb81d59_0000014a5af2dc7b_1 ... (0s) 
    Current status: DONE  
Tables 'helixdata2:dataset1.temp' successfully copied to 
    'helixdata2:dataset1.table1' 
$ bq rm dataset1.temp 
rm: remove table 'helixdata2:dataset1.temp'? (y/N) y 

이제 테이블이 복원되었는지 확인하자 :

$ bq query "select * from dataset1.table1" 
Waiting on bqjob_r5967bea49ed9e97f_0000014a5af34dec_1 ... (0s) 
    Current status: DONE 
+----+ 
| a | 
+----+ 
| 17 | 
+----+ 
+0

을 조금만 또한,이 오류 얻을 경우 "쿼리 작업에서 오류 : 프로젝트 ID가없는 작업을 시작할 수 없습니다." 프로젝트 ID를 추가하십시오. bq 쉘의 경우 : - [bq shell --project_id = myprojectid] – shiva

+0

@ Jordan Tigani 데이터 세트의 스냅 샷을 얻을 수 있습니까? 내가 우연히 삭제 한 테이블이 확실하지 않기 때문에 특정 타임 스탬프에 어떤 테이블이 있는지 알고 싶습니다. – shiva

+1

중요 사항 : 테이블을 다시 만들면 테이블을 삭제 취소 할 수 없습니다. 즉,이 스냅 샷 복구는 "스트리밍 중 필요할 때 테이블 생성"템플릿 테이블 기능과 함께 실수로 복구하는 데 사용할 수 없습니다. 우리는 이것을 어려운 방법으로 배웠습니다 : 실수로 생산 테이블을 삭제했습니다. 즉, 즉시 재 작성되어 스냅 샷에서 복구 할 수 없었습니다. –

관련 문제