首页 > 解决方案 > BigQuery 结果直接在 GCS - PHP API

问题描述

我正在尝试将 BigQuery 查询的结果直接导出到 GCS,以避免将查询结果存储在我的 Apache 服务器上,然后将其发送到 GCS(不适用于大文件)。

有没有办法配置 QueryJob 将数据直接发送到 GCS 存储桶?

使用 Google Cloud 的 PHP API https://github.com/googleapis/google-cloud-php-bigquery

标签: phpgoogle-cloud-platformgoogle-bigquery

解决方案


您可以通过组合查询和提取作业来做到这一点:

<?php

use Google\Cloud\BigQuery\BigQueryClient;

$bigquery = new BigQueryClient();

$datasetId = "my-dataset";
$tableId = "my-new-table";
$gsUri = "gs://my-bucket/my-object";

$queryString = "SELECT * FROM `bigquery-public-data.austin_311.311_request` LIMIT 1000";

$newTable = $bigquery->dataset($datasetId)
    ->table($tableId);

$q = $bigquery->query($queryString);
$q->destinationTable($newTable);

$bigquery->runQuery($q)
    ->waitUntilComplete();

$extract = $newTable->extract($gsUri);

$newTable->runJob($extract);

$newTable->delete();

推荐阅读