InsertAll使用C#无法正常工作

时间:2015-04-12 05:29:39

标签: google-bigquery

我想知道为什么这段代码不起作用。它运行没有错误但没有插入行。我正在使用C#客户端库。

有什么想法吗?谢谢!

string SERVICE_ACCOUNT_EMAIL = "(myserviceaccountemail)";
  string SERVICE_ACCOUNT_PKCS12_FILE_PATH = @"C:\(myprivatekeyfile)";
  System.Security.Cryptography.X509Certificates.X509Certificate2 certificate = 
  new System.Security.Cryptography.X509Certificates.X509Certificate2(SERVICE_ACCOUNT_PKCS12_FILE_PATH, "notasecret",
        System.Security.Cryptography.X509Certificates.X509KeyStorageFlags.Exportable);


             ServiceAccountCredential credential = new ServiceAccountCredential(
               new ServiceAccountCredential.Initializer(SERVICE_ACCOUNT_EMAIL)
               {
                    Scopes = new[] { BigqueryService.Scope.BigqueryInsertdata, BigqueryService.Scope.Bigquery }
               }.FromCertificate(certificate));



            // Create the service.
        var service = new BigqueryService(new BaseClientService.Initializer()
        {
            HttpClientInitializer = credential,
            ApplicationName = "test"

        });

    Google.Apis.Bigquery.v2.Data.TableDataInsertAllRequest tabreq = new Google.Apis.Bigquery.v2.Data.TableDataInsertAllRequest();

    List<Google.Apis.Bigquery.v2.Data.TableDataInsertAllRequest.RowsData> tabrows = new List<Google.Apis.Bigquery.v2.Data.TableDataInsertAllRequest.RowsData>();
    Google.Apis.Bigquery.v2.Data.TableDataInsertAllRequest.RowsData rd = new Google.Apis.Bigquery.v2.Data.TableDataInsertAllRequest.RowsData();
    IDictionary<string,object> r = new Dictionary<string,object>();
    r.Add("campo1", "test4");
    r.Add("campo2", "test5");
    rd.Json = r;

    tabrows.Add(rd);
    tabreq.Rows = tabrows;

service.Tabledata.InsertAll(tabreq, "(myprojectid)", "spots", "spots");

1 个答案:

答案 0 :(得分:0)

我认为你应该添加Kind字段[1]。它应该是这样的:

tabreq.Kind = "bigquery#tableDataInsertAllRequest";

另请注意,API的每个请求都有一个响应[2],其中包含其他信息以帮助您找到问题的根本原因。

var requestResponse = service.Tabledata.InsertAll(tabreq, "(myprojectid)", "spots", "spots");

[1] https://developers.google.com/resources/api-libraries/documentation/bigquery/v2/csharp/latest/classGoogle_1_1Apis_1_1Bigquery_1_1v2_1_1Data_1_1TableDataInsertAllRequest.html#aa2e9b0da5e15b158ae0d107378376b26

[2] https://cloud.google.com/bigquery/docs/reference/v2/tabledata/insertAll