使用 C# 插入全部不起作用



我想知道为什么这段代码不起作用。它运行没有错误,但不会插入行。我正在使用 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]。它应该是这样的:

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

最新更新