bigquery如何获取本地CSV文件的插入作业的作业参考

时间:2013-10-29 15:17:40

标签: csv google-bigquery

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

以下是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
    .
    .

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

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

是否可以从JobsResource.InsertMediaUpload获取作业参考? (insert.Body.JobReference为null)

或者是否有其他方法可以将本地文件上传到bigquery表?

1 个答案:

答案 0 :(得分:1)

我们建议您通过自己的工作参考的所有装载作业 - 在网络打嗝的情况下,您将能够告诉作业的状态。作业参考在项目中必须是唯一的,但通过创建随机数或使用当前时间这很容易。