使用 php 将本地文件加载到 bigquery 中

Posted

技术标签:

【中文标题】使用 php 将本地文件加载到 bigquery 中【英文标题】:Load a local file into bigquery with php 【发布时间】:2015-04-20 20:05:16 【问题描述】:

希望使用 google-php-api 将本地文件加载到 bigquery 中,目前我正在使用:

    $load = new Google_Service_Bigquery_JobConfigurationLoad();
    $load->setDestinationTable($table);
    $load->setSourceUris()
    $load->setSourceFormat('NEWLINE_DELIMITED_JSON');
    $load->setMaxBadRecords(1);

    $config = new Google_Service_Bigquery_JobConfiguration();
    $config->setLoad($load);

    $job = new Google_Service_Bigquery_Job();
    $job->setConfiguration($config);
    $job->setKind('load');

    return $this->service->jobs->insert(PROJECT, $job);

我遇到的问题是

$load->setSourceUris()

只接受 google 存储 uri,我想使用本地文件。或者,我可以一次将多行流式传输到 bigquery 中,但是我只想加载一个文件或“批量插入”有没有办法做到这一点?

【问题讨论】:

【参考方案1】:

您只能加载上传到 Google Cloud Storage 的文件,不能上传本地文件。您需要先将文件上传到 GCS。

您可以从本地文件批量流式传输文件内容。

【讨论】:

虽然我不介意流式传输,但每个请求的推荐批量大小是多少?我需要平均每分钟插入 60000 个,并希望确保尽可能优化 您可以并行运行作业,流式插入有严格限制,请参见此处:cloud.google.com/bigquery/streaming-data-into-bigquery#quota 没有太多可调整的地方,您有 HTTP 请求大小限制。

以上是关于使用 php 将本地文件加载到 bigquery 中的主要内容,如果未能解决你的问题,请参考以下文章

使用本地文件通过 java 库加载 Google BigQuery 表

将列动态添加到现有 BigQuery 表

将数据从 BigQuery 导出到本地 PostgreSQL/MySql 数据库

使用 Google Cloud Datalab 时如何将 .gz 文件加载到 BigQuery?

BigQuery:如何使用传输 API 将文件从 GCS 加载到现有表?

使用 Python,将 google.cloud.bigquery.job.query.QueryJob 输出保存到本地 JSON 文件