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) を取得できれば、ジョブが終了 (「完了」) するのを待つことができるはずですが、csharp API でその参照を取得する方法が見つかりません。
JobsResource.InsertMediaUpload からジョブ参照を取得することは可能ですか? (insert.Body.JobReference は null です)
または、ローカル ファイルを bigquery テーブルにアップロードする別の方法はありますか?