将大查询结果附加到java appengine

时间:2016-06-07 11:19:44

标签: java google-app-engine google-bigquery google-cloud-platform

基本上我想将bigquery的查询结果附加到现有的大查询表而不迭代结果。
Bigquery结果出现在List<TableRow> Bigquery insertAll()要求TableDataInsertAllRequest.setRows()方法,但此方法仅需List<TableDataInsertAllRequest.Rows>,因此我必须迭代List<TableRow>,但因为我查询结果有很多行,这是低效的。

那么如何在查询中配置目标表?

2 个答案:

答案 0 :(得分:3)

查看configuration.query API

Jobs: insert属性

特别是 - configuration.query.writeDisposition - 指定目标表已存在时发生的操作。在您的情况下,您应该使用 - WRITE_APPEND

答案 1 :(得分:1)

谷歌支持给了我答案。通过使用异步查询,可以如下所示设置目标表。

JobConfigurationQuery queryConfig = new JobConfigurationQuery().setQuery(<querySql>);
queryConfig.setDestinationTable(<destination_table>);
queryConfig.setWriteDisposition("WRITE_APPEND");
Job job = new Job().setConfiguration(new JobConfiguration().setQuery(queryConfig));

bigquery.jobs().insert(projectId, job).execute();

Google支持非常棒!