단일 소스 테이블을 지정된 대상에 복사합니다.
더 살펴보기
이 코드 샘플이 포함된 자세한 문서는 다음을 참조하세요.
코드 샘플
C#
이 샘플을 사용해 보기 전에 BigQuery 빠른 시작: 클라이언트 라이브러리 사용의 C# 설정 안내를 따르세요. 자세한 내용은 BigQuery C# API 참조 문서를 확인하세요.
using Google.Apis.Bigquery.v2.Data;
using Google.Cloud.BigQuery.V2;
using System;
public class BigQueryCopyTable
{
public void CopyTable(
string projectId = "your-project-id",
string destinationDatasetId = "your_dataset_id"
)
{
BigQueryClient client = BigQueryClient.Create(projectId);
TableReference sourceTableRef = new TableReference()
{
TableId = "shakespeare",
DatasetId = "samples",
ProjectId = "bigquery-public-data"
};
TableReference destinationTableRef = client.GetTableReference(
destinationDatasetId, "destination_table");
BigQueryJob job = client.CreateCopyJob(
sourceTableRef, destinationTableRef)
.PollUntilCompleted() // Wait for the job to complete.
.ThrowOnAnyError();
// Retrieve destination table
BigQueryTable destinationTable = client.GetTable(destinationTableRef);
Console.WriteLine(
$"Copied {destinationTable.Resource.NumRows} rows from table "
+ $"{sourceTableRef.DatasetId}.{sourceTableRef.TableId} "
+ $"to {destinationTable.FullyQualifiedId}."
);
}
}
Go
이 샘플을 사용해 보기 전에 BigQuery 빠른 시작: 클라이언트 라이브러리 사용의 Go 설정 안내를 따르세요. 자세한 내용은 BigQuery Go API 참조 문서를 확인하세요.
import (
"context"
"fmt"
"cloud.google.com/go/bigquery"
)
// copyTable demonstrates copying a table from a source to a destination, and
// allowing the copy to overwrite existing data by using truncation.
func copyTable(projectID, datasetID, srcID, dstID string) error {
// projectID := "my-project-id"
// datasetID := "mydataset"
// srcID := "sourcetable"
// dstID := "destinationtable"
ctx := context.Background()
client, err := bigquery.NewClient(ctx, projectID)
if err != nil {
return fmt.Errorf("bigquery.NewClient: %v", err)
}
defer client.Close()
dataset := client.Dataset(datasetID)
copier := dataset.Table(dstID).CopierFrom(dataset.Table(srcID))
copier.WriteDisposition = bigquery.WriteTruncate
job, err := copier.Run(ctx)
if err != nil {
return err
}
status, err := job.Wait(ctx)
if err != nil {
return err
}
if err := status.Err(); err != nil {
return err
}
return nil
}
자바
이 샘플을 사용해 보기 전에 BigQuery 빠른 시작: 클라이언트 라이브러리 사용의 자바 설정 안내를 따르세요. 자세한 내용은 BigQuery 자바 API 참조 문서를 확인하세요.
import com.google.cloud.bigquery.BigQuery;
import com.google.cloud.bigquery.BigQueryException;
import com.google.cloud.bigquery.BigQueryOptions;
import com.google.cloud.bigquery.CopyJobConfiguration;
import com.google.cloud.bigquery.Job;
import com.google.cloud.bigquery.JobInfo;
import com.google.cloud.bigquery.TableId;
public class CopyTable {
public static void main(String[] args) {
// TODO(developer): Replace these variables before running the sample.
String destinationDatasetName = "MY_DESTINATION_DATASET_NAME";
String destinationTableId = "MY_DESTINATION_TABLE_NAME";
String sourceDatasetName = "MY_SOURCE_DATASET_NAME";
String sourceTableId = "MY_SOURCE_TABLE_NAME";
copyTable(sourceDatasetName, sourceTableId, destinationDatasetName, destinationTableId);
}
public static void copyTable(
String sourceDatasetName,
String sourceTableId,
String destinationDatasetName,
String destinationTableId) {
try {
// Initialize client that will be used to send requests. This client only needs to be created
// once, and can be reused for multiple requests.
BigQuery bigquery = BigQueryOptions.getDefaultInstance().getService();
TableId sourceTable = TableId.of(sourceDatasetName, sourceTableId);
TableId destinationTable = TableId.of(destinationDatasetName, destinationTableId);
// For more information on CopyJobConfiguration see:
// https://googleapis.dev/java/google-cloud-clients/latest/com/google/cloud/bigquery/JobConfiguration.html
CopyJobConfiguration configuration =
CopyJobConfiguration.newBuilder(destinationTable, sourceTable).build();
// For more information on Job see:
// https://googleapis.dev/java/google-cloud-clients/latest/index.html?com/google/cloud/bigquery/package-summary.html
Job job = bigquery.create(JobInfo.of(configuration));
// Blocks until this job completes its execution, either failing or succeeding.
Job completedJob = job.waitFor();
if (completedJob == null) {
System.out.println("Job not executed since it no longer exists.");
return;
} else if (completedJob.getStatus().getError() != null) {
System.out.println(
"BigQuery was unable to copy table due to an error: \n" + job.getStatus().getError());
return;
}
System.out.println("Table copied successfully.");
} catch (BigQueryException | InterruptedException e) {
System.out.println("Table copying job was interrupted. \n" + e.toString());
}
}
}
Node.js
이 샘플을 사용해 보기 전에 BigQuery 빠른 시작: 클라이언트 라이브러리 사용의 Node.js 설정 안내를 따르세요. 자세한 내용은 BigQuery Node.js API 참조 문서를 확인하세요.
// Import the Google Cloud client library and create a client
const {BigQuery} = require('@google-cloud/bigquery');
const bigquery = new BigQuery();
async function copyTable() {
// Copies src_dataset:src_table to dest_dataset:dest_table.
/**
* TODO(developer): Uncomment the following lines before running the sample
*/
// const srcDatasetId = "my_src_dataset";
// const srcTableId = "my_src_table";
// const destDatasetId = "my_dest_dataset";
// const destTableId = "my_dest_table";
// Copy the table contents into another table
const [job] = await bigquery
.dataset(srcDatasetId)
.table(srcTableId)
.copy(bigquery.dataset(destDatasetId).table(destTableId));
console.log(`Job ${job.id} completed.`);
// Check the job's status for errors
const errors = job.status.errors;
if (errors && errors.length > 0) {
throw errors;
}
}
PHP
이 샘플을 사용해 보기 전에 BigQuery 빠른 시작: 클라이언트 라이브러리 사용의 PHP 설정 안내를 따르세요. 자세한 내용은 BigQuery PHP API 참조 문서를 참조하세요.
use Google\Cloud\BigQuery\BigQueryClient;
use Google\Cloud\Core\ExponentialBackoff;
/** Uncomment and populate these variables in your code */
// $projectId = 'The Google project ID';
// $datasetId = 'The BigQuery dataset ID';
// $sourceTableId = 'The BigQuery table ID to copy from';
// $destinationTableId = 'The BigQuery table ID to copy to';
$bigQuery = new BigQueryClient([
'projectId' => $projectId,
]);
$dataset = $bigQuery->dataset($datasetId);
$sourceTable = $dataset->table($sourceTableId);
$destinationTable = $dataset->table($destinationTableId);
$copyConfig = $sourceTable->copy($destinationTable);
$job = $sourceTable->runJob($copyConfig);
// poll the job until it is complete
$backoff = new ExponentialBackoff(10);
$backoff->execute(function () use ($job) {
print('Waiting for job to complete' . PHP_EOL);
$job->reload();
if (!$job->isComplete()) {
throw new Exception('Job has not yet completed', 500);
}
});
// check if the job has errors
if (isset($job->info()['status']['errorResult'])) {
$error = $job->info()['status']['errorResult']['message'];
printf('Error running job: %s' . PHP_EOL, $error);
} else {
print('Table copied successfully' . PHP_EOL);
}
Python
이 샘플을 사용해 보기 전에 BigQuery 빠른 시작: 클라이언트 라이브러리 사용의 Python 설정 안내를 따르세요. 자세한 내용은 BigQuery Python API 참조 문서를 확인하세요.
from google.cloud import bigquery
# Construct a BigQuery client object.
client = bigquery.Client()
# TODO(developer): Set source_table_id to the ID of the original table.
# source_table_id = "your-project.source_dataset.source_table"
# TODO(developer): Set destination_table_id to the ID of the destination table.
# destination_table_id = "your-project.destination_dataset.destination_table"
job = client.copy_table(source_table_id, destination_table_id)
job.result() # Wait for the job to complete.
print("A copy of the table created.")
다음 단계
다른 Google Cloud 제품의 코드 샘플을 검색하고 필터링하려면 Google Cloud 샘플 브라우저를 참조하세요.