在 C# 中插入具有重复记录列的 BigQuery 行
Posted
技术标签:
【中文标题】在 C# 中插入具有重复记录列的 BigQuery 行【英文标题】:Insert row in BigQuery having repeated record column in C# 【发布时间】:2019-10-08 16:11:37 【问题描述】:我有一个在 BigQuery 中插入一行的 C# 代码。但是 BigQuery 中的表有一个记录字段。 我应该如何将数据插入到该表中?
BigQuery 表: 第 1 列 |第 2 列 |列 3.a |列 3.b |第4栏
*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)table
是什么对象?它是一个数据表吗? 2)我们能看到BigQueryInsertRow
的定义吗?
'table' 是将数据行插入其中的 BigQuery 表名称。 BigQueryInsertRow 是一个类。它的定义可以在这里找到:googleapis.github.io/google-cloud-dotnet/docs/…
好的,谢谢。而您遇到问题的代码......它会引发错误吗?如果是这样,错误是什么?
您是否尝试按原样添加它?即insertRow.Add("column3", data[i].column3)
?
是的,但它给了我一个 BigQuery 错误。
【参考方案1】:
玩弄之后,我能够将重复的数据插入到我的 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。
【讨论】:
以上是关于在 C# 中插入具有重复记录列的 BigQuery 行的主要内容,如果未能解决你的问题,请参考以下文章
Google BigQuery:具有重复名称的联接表的所有列的前缀