동일한 프로젝트 내에서 한 데이터 세트의 테이블 세트를 다른 데이터 세트로 복사하려고합니다. Ipython 노트북에서 코드를 실행합니다.하나의 데이터 세트에서 다른 데이터 세트로 google big 쿼리로 복사
list = bq.DataSet('test:TestDataset')
for x in list.tables():
if(re.match('table1(.*)',x.name.table_id)):
value = 'test:TestDataset.'+ x.name.table_id
그럼 내가 다른 하나 개의 데이터 집합에서 테이블을 복사하려면 "BQ은 cp"명령을 사용하여 시도 :
나는 테이블 이름의 목록이 아래의 코드를 사용하여 변수 "값"에 복사 할 수 . 하지만 노트북에서 bq 명령을 실행할 수는 없습니다.
!bq cp $value proj1:test1.table1_20162020
참고 :
나는 거기에 관련된 복사 명령은 그러나 어떤을 찾을 수 있는지 확인하기 위해 BigQuery를 명령했습니다.
도움이 될 것입니다!
이def copyTable(service):
try:
sourceProjectId = raw_input("What is your source project? ")
sourceDatasetId = raw_input("What is your source dataset? ")
sourceTableId = raw_input("What is your source table? ")
targetProjectId = raw_input("What is your target project? ")
targetDatasetId = raw_input("What is your target dataset? ")
targetTableId = raw_input("What is your target table? ")
jobCollection = service.jobs()
jobData = {
"projectId": sourceProjectId,
"configuration": {
"copy": {
"sourceTable": {
"projectId": sourceProjectId,
"datasetId": sourceDatasetId,
"tableId": sourceTableId,
},
"destinationTable": {
"projectId": targetProjectId,
"datasetId": targetDatasetId,
"tableId": targetTableId,
},
"createDisposition": "CREATE_IF_NEEDED",
"writeDisposition": "WRITE_TRUNCATE"
}
}
}
insertResponse = jobCollection.insert(projectId=targetProjectId, body=jobData).execute()
# Ping for status until it is done, with a short pause between calls.
import time
while True:
status = jobCollection.get(projectId=targetProjectId,
jobId=insertResponse['jobReference']['jobId']).execute()
if 'DONE' == status['status']['state']:
break
print 'Waiting for the import to complete...'
time.sleep(10)
if 'errors' in status['status']:
print 'Error loading table: ', pprint.pprint(status)
return
print 'Loaded the table:' , pprint.pprint(status)#!!!!!!!!!!
# Now query and print out the generated results table.
queryTableData(service, targetProjectId, targetDatasetId, targetTableId)
except HttpError as err:
print 'Error in loadTable: ', pprint.pprint(err.resp)
bq cp
명령은 기본적으로 수행합니다 워드 프로세서에서 파이썬 예를 복사
https://cloud.google.com/bigquery/docs/tables#copyingtable
: 파이썬과의 BigQuery API를 사용하는 경우
감사합니다. Felipe. 하지만 제 시나리오에서는 동일한 이름으로 시작하지만 끝에 다른 타임 스탬프가있는 여러 테이블을 복사해야합니다. 그 이유는 내가 테이블 목록을 통해 루프와 'table1'로 시작하는 테이블의 목록을 얻을 – user3447653
뭔가 파이썬과 제공된 코드로 자동화하기 쉬운 것 같아? –