基本上我想将bigquery的查询结果附加到现有的大查询表而不迭代结果。
Bigquery结果出现在List<TableRow>
Bigquery insertAll()
要求TableDataInsertAllRequest
有.setRows()
方法,但此方法仅需List<TableDataInsertAllRequest.Rows>
,因此我必须迭代List<TableRow>
,但因为我查询结果有很多行,这是低效的。
那么如何在查询中配置目标表?
答案 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支持非常棒!