在BigQuery中插入具有C#中重复记录列的行

时间:2019-10-08 16:11:37

标签: c# google-bigquery

我有一个C#代码,可在BigQuery中插入一行。但是BigQuery中的表有一个记录字段。 我应该如何将数据插入该表?

BigQuery表:
第1列|第2列| column3.a | column3.b |栏

* column3是具有多行“ a”和“ b”的记录

这是我到目前为止在C#代码中得到的:

BigQueryClient BQclient = BigQueryClient.Create(project_id, credentials);
var table = BQclient.GetDataset("dataset").GetTable("table");
List < BigQueryInsertRow > rows = new List < BigQueryInsertRow >();
try {
      for (int i=0; i < data.Count; i++ ) {
          BigQueryInsertRow insertRow = new BigQueryInsertRow();
          insertRow.Add("column1", data[i].column1);
          insertRow.Add("column2", data[i].column2);

↓↓↓这是我很难过的地方↓↓↓

          for (int j=0; j < data[i].column3.Count; j++ ) {
              insertRow.Add("colum3.a", data[i].column3[j].a);
              insertRow.Add("colum3.b", data[i].column3[j].b);
          }

↑↑↑这是我遇到困难的地方↑↑↑

          insertRow.Add("column4"), data[i].column4);
          rows.Add(insertRow);
      }
      table.InsertRows(rows);
}
catch (Exception e) {
    throw e;
}

1 个答案:

答案 0 :(得分:0)

玩了之后,我能够将重复的数据插入到我的insertRow中。
这是我所做的:

var temp = new BigQueryRow();
var list_data = new List<BigQueryInsertRow>();
for (int j=0; j<data[i].column3.Count; j++)
{
   temp = new BigQueryRow();
   temp.Add("a", data[i].column3[j].a);
   temp.Add("b", data[i].column3[j].b);
   list_data.Add(temp);
}
insertRow.Add("column3", list_data);

显然,记录中的每一列都应使用其自己的列名来命名,而不必附加父列名column3。