php - BigQuery 结果直接在 GCS - PHP API
问题描述
我正在尝试将 BigQuery 查询的结果直接导出到 GCS,以避免将查询结果存储在我的 Apache 服务器上,然后将其发送到 GCS(不适用于大文件)。
有没有办法配置 QueryJob 将数据直接发送到 GCS 存储桶?
使用 Google Cloud 的 PHP API https://github.com/googleapis/google-cloud-php-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();
推荐阅读
- javascript - 我创建了我的自定义每个函数(数组函数),但这没有按预期工作,
- python-3.x - RuntimeError:matplotlib 不支持生成器作为输入
- python - 如何在 excepts 子句中使用包中的自定义异常?
- php - 如何在 Laravel 上的 app/Mail VeryfyMail.php 上生成随机令牌?
- python - boto3 客户端方法使用变量作为方法名
- laravel-5 - Laravel如何禁用/删除路由缓存
- c# - 使用排序委托进行排序。我需要在排序时优先考虑几个数字
- javascript - 搜索单词是否在数组中
- tensorflow - 如何在 Google Colaboratory(Tensorflow)中不重新启动运行时清除 GPU 内存
- r - 如何将不同的单位转换为一个?