クエリ結果を Amazon S3 バケットにエクスポートします。
コードサンプル
Java
このサンプルを試す前に、BigQuery クイックスタート: クライアント ライブラリの使用の Java の設定手順を実施してください。詳細については、BigQuery Java API のリファレンス ドキュメントをご覧ください。
import com.google.cloud.bigquery.BigQuery;
import com.google.cloud.bigquery.BigQueryException;
import com.google.cloud.bigquery.BigQueryOptions;
import com.google.cloud.bigquery.QueryJobConfiguration;
import com.google.cloud.bigquery.TableResult;
// Sample to export query results to Amazon S3 bucket
public class ExportQueryResultsToS3 {
public static void main(String[] args) throws InterruptedException {
// TODO(developer): Replace these variables before running the sample.
String projectId = "MY_PROJECT_ID";
String datasetName = "MY_DATASET_NAME";
String externalTableName = "MY_EXTERNAL_TABLE_NAME";
// connectionName should be in the format of connection_region.connection_name. e.g.
// aws-us-east-1.s3-write-conn
String connectionName = "MY_CONNECTION_REGION.MY_CONNECTION_NAME";
// destinationUri must contain exactly one * anywhere in the leaf directory of the path string
// e.g. ../aa/*, ../aa/b*c, ../aa/*bc, and ../aa/bc*
// BigQuery replaces * with 0000..N depending on the number of files exported.
// BigQuery determines the file count and sizes.
String destinationUri = "s3://your-bucket-name/*";
String format = "EXPORT_FORMAT";
// Export result of query to find states starting with 'W'
String query =
String.format(
"EXPORT DATA WITH CONNECTION `%s` OPTIONS(uri='%s', format='%s') "
+ "AS SELECT * FROM %s.%s.%s WHERE name LIKE 'W%%'",
connectionName, destinationUri, format, projectId, datasetName, externalTableName);
exportQueryResultsToS3(query);
}
public static void exportQueryResultsToS3(String query) throws InterruptedException {
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();
TableResult results = bigquery.query(QueryJobConfiguration.of(query));
results
.iterateAll()
.forEach(row -> row.forEach(val -> System.out.printf("%s,", val.toString())));
System.out.println("Query results exported to Amazon S3 successfully.");
} catch (BigQueryException e) {
System.out.println("Query not performed \n" + e.toString());
}
}
}