如何将 BigQuery 查询结果保存到另一个表?

Posted

技术标签:

【中文标题】如何将 BigQuery 查询结果保存到另一个表?【英文标题】:How to save BigQuery query results to another table? 【发布时间】:2016-07-22 08:51:15 【问题描述】:

我想将查询结果保存到新表中。 使用像 bigquery.cloud.google 这样的 BigQuery 在线编辑器,我可以使用 Felipe Hoffa 的 micro-solution 轻松完成。 几秒钟内插入了大约 150.000.000 行的结果。

但我如何通过 BigQuery API 使用“目标表”参数运行查询?

【问题讨论】:

在作业配置中设置configuration.query.destinationTable.*字段,然后调用jobs.insert? cloud.google.com/bigquery/docs/reference/v2/jobs/insert 有更多信息。 【参考方案1】:

通过使用Jobs.insert API 调用。

例如,在 Java 中:

[...]
TableReference tableRef = new TableReference();
tableRef.setProjectId("<project>");
tableRef.setDatasetId("<dataset>");
tableRef.setTableId("<name>");

JobConfigurationQuery queryConfig = new JobConfigurationQuery();
queryConfig.setDestinationTable(tableRef);
queryConfig.setAllowLargeResults(true);
queryConfig.setQuery("some sql");
queryConfig.setCreateDisposition(CREATE_IF_NEEDED);
queryConfig.setWriteDisposition(WRITE_APPEND);

JobConfiguration config = new JobConfiguration().setQuery(queryConfig);
Job job = new Job();
job.setConfiguration(config);

Bigquery.Jobs.Insert insert = bigquery.jobs().insert("<projectid>", job);
JobReference jobId = insert.execute().getJobReference();
[...]

【讨论】:

以上是关于如何将 BigQuery 查询结果保存到另一个表?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Apps 脚本运行不将结果写入表的 BigQuery 作业?

如何将一个表的查询结果插入到另一个表中?

MYSQL 如何把查询到的结果插入到另一个表中?

如何将查询结果插入 BigQuery 前缀表

将一个表的查询结果插入到另一个表中(oracle、mysql、sql 、GP)

Python 中的 Bigquery:如何将查询结果放入表中?