【发布时间】:2026-01-13 14:50:01
【问题描述】:
我想等待 BigQuery 插入作业完成。在这个用例中,我正在对 Google Drive 中的 CSV 文件进行插入操作,这些文件可能非常大。
var res = BigQuery.Jobs.insert(job, projectId, data);
如果我有查询结果,我可以对 jobComplete 属性进行轮询,但在插入时没有。
例如,工作状态状态似乎永远不会是“正在运行”之外的任何东西。 因此,如何在此处等待或轮询插入以确保完成?
job = BigQuery.Jobs.insert(job, projectId, data);
var state = job.status.state;
// this never ends:
for( var sleep=128 ; state.equals('RUNNING') ; sleep*=2 ) {
Logger.log(state);
state = job.status.state;
Utilities.sleep(sleep);
} // for
【问题讨论】:
-
这是一个教程的摘录
job = BigQuery.Jobs.insert(job, projectId, data); Logger.log('Load job started. Check on the status of it here: ' + 'https://bigquery.cloud.google.com/jobs/%s', projectId);教程在这里找到https://developers.google.com/apps-script/advanced/bigquery我希望能有所帮助。抱歉,我无法提供更多帮助...我从未使用过 BigQuery -
@Cooper,insert() 方法异步调用插入然后返回。在那里创建的 URL 只是一个到控制台的用户级链接,但不提供任何类型的其他接口来进行自省。
-
我的印象是您可以轮询该 url 的状态。
-
@tehhowch 我刚刚更新了问题,但实际上 jobstatus.state 似乎从未改变,即使工作确实在后端完成。
标签: google-apps-script google-bigquery