Google bigquery Google BigQuery:以json格式将ExecuteQuery结果上传到Google云存储
我正在导入包含重复记录的bigquery表,我需要将这些记录上载到google云存储,如何将结果转换为json格式,以便将其存储在google云中 下面是我的代码:Google bigquery Google BigQuery:以json格式将ExecuteQuery结果上传到Google云存储,google-bigquery,Google Bigquery,我正在导入包含重复记录的bigquery表,我需要将这些记录上载到google云存储,如何将结果转换为json格式,以便将其存储在google云中 下面是我的代码: BigQueryClient Client = BigQueryClient.Create("test", _googleCredential) string query = @"select * from `projecttest.TestDataset.CostData`"; result = Client.Ex
BigQueryClient Client = BigQueryClient.Create("test", _googleCredential)
string query = @"select * from `projecttest.TestDataset.CostData`";
result = Client.ExecuteQuery(query, parameters: null, queryOptions: new QueryOptions { UseLegacySql = false });
正如我看到的,您可以对整个表执行此操作—您应该使用JSON格式的导出作业,您可以使用BigQuery功能将表数据以多种格式(例如导出格式)从BigQuery导出到GCS 我建议您查看官方文档,其中包含一些有用的示例,以便在使用特定编程语言时,通过API、Web UI、命令行和客户端库提交提取作业,如以下C代码示例所示:
public void ExportJsonToGcs(
string datasetId, string tableId, string bucketName, string fileName,
BigQueryClient client)
{
StorageClient gcsClient = StorageClient.Create();
string contentType = "application/json";
// Get Table and append results into StringBuilder.
PagedEnumerable<TableDataList, BigQueryRow> result = client.ListRows(datasetId, tableId);
StringBuilder sb = new StringBuilder();
foreach (var row in result)
{
sb.Append($"{{\"title\" : \"{row["title"]}\", \"unique_words\":\"{row["unique_words"]}\"}}{Environment.NewLine}");
}
// Save stream to Google Cloud Storage.
using (var stream = new MemoryStream(Encoding.UTF8.GetBytes(sb.ToString())))
{
var obj = gcsClient.UploadObject(bucketName, fileName, contentType, stream);
}
}
感谢您的回复,请您提供使用c的导出作业的文档。你指的是ExportJsonToGcs方法吗?我必须导入通配符表,其中有重复记录。因此,很难通过为每一行/列添加特征来创建json。我们有什么方法可以跳过手动创建json吗?当然。您可以尝试这种方法,我不再是c语言的人了,所以不能确定相关的api是什么,并且在导出时不需要设置模式-请参阅以获取要设置的必需属性。另外-重要-选择*导致扫描整个表的成本vs导出是免费的我看到了这段代码,但我必须上传其中包含记录数据类型的表。导入这些表是否可行?根据文档,您上传带有记录数据类型的表应该没有问题,因为BigQuery支持源格式的嵌套和重复数据,源格式支持基于对象的模式,例如JSON文件。如果我需要上传n个表,那么手动为每个表指定模式不是一个好的做法。我同意。提到嵌套和重复列引用是为了指出对和数据类型的支持。基于此,在处理这些记录时,您应该能够毫无问题地使用导出表数据BigQuery功能。但是,由于您无法在一个导出作业中从多个表导出数据,因此我认为您可以获得一个BigQuery表列表,并使用它将表逐个移动到GCS或从GCS移出,在将模式加载到BigQuery时添加模式自动检测,以自动检测字段数据类型。