Google bigquery Google BigQuery:以json格式将ExecuteQuery结果上传到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

我正在导入包含重复记录的bigquery表,我需要将这些记录上载到google云存储,如何将结果转换为json格式,以便将其存储在google云中

下面是我的代码:

  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时添加模式自动检测,以自动检测字段数据类型。