1

我有一小段代码可以将 CSV 文件发送到 bigquery 表。CSV 文件位于本地 HD 上(不在 Google 云存储上)。

这是 csharp 代码的简化版本(使用 bigquery csharp API 的 2.1.5.0.122 版本)。

    BigqueryService bq = someMethodToGetABigqueryServiceInstance();
    JobConfigurationLoad loadJobCfg = new JobConfigurationLoad();
    loadJobCfg.SourceFormat = "CSV";
    .
    .
    .
    Job job = new Job();
    JobConfiguration config = new JobConfiguration();
    config.Load = loadJobCfg;
    job.Configuration = config;
    FileStream fs = new FileStream(@"c:\temp\onecol.csv", FileMode.Open, FileAccess.Read, FileShare.Read);
    JobsResource.InsertMediaUpload insert = bq.Jobs.Insert(job, projectId, fs, "application/octet-stream");
    var progress = insert.Upload();
    // wait for Google.Apis.Upload.UploadStatus.Completed
    .
    .

问题是当我收到 Completed 状态时,文件已上传,但数据尚未在目标表中(即:作业仍在运行)。

通常,如果我可以获得它的引用(或 ID),我应该能够等待作业完成('DONE'),但我找不到在 csharp API 中获取该引用的方法。

是否可以从 JobsResource.InsertMediaUpload 获取工作参考?(插入.Body.JobReference 为空)

还是有另一种方法可以将本地文件上传到 bigquery 表?

4

1 回答 1

1

我们建议您传递您自己的作业参考的所有加载作业 - 这样在网络出现故障时,您将能够了解作业的状态。工作参考在项目中必须是唯一的,但这很容易通过创建随机数或使用当前时间来实现。

于 2013-10-29T17:57:20.257 回答