java - 根据 BigQuery 中多个表的数据生成 CSV 文件

标签 java google-bigquery

我们需要根据 BigQuery 中多个表中的数据生成 CSV 文件。

目前,我们正在尝试构建一个 java 服务,它将借助 google-cloud-bigquery 包获取 TableResult 中的数据,并收集 TableResult 对象中的数据并循环遍历它以创建 CSV。 这种方法的速度和可扩展性如何。

或者 GCP 是否提供其他选项来完成此任务。 请提出建议。

最佳答案

最有效的方法是使用内置 BigQuery export到 GCS 机制,因为 BigQuery 利用其并行性使用多个线程写入输出。您最多可以将 1 GB 的表数据导出到单个文件。如果您要导出超过 1 GB 的数据,请使用 wildcard将数据导出到多个文件中:

gs://<BUCKET_NAME>/csvfilename*.csv

然后,当您的所有 .csv 文件都位于存储桶中时,您可以使用 gsutil compose 命令,该命令会创建一个新对象,其内容是给定的串联同一桶下源对象的顺序:

gsutil compose gs://<BUCKET_NAME>/a.csv gs://<BUCKET_NAME>/b.csv gs://<BUCKET_NAME>/composite.csv

其中 composite.csva.csvb.csv 的串联。请参阅documentation .

希望对您有所帮助。

关于java - 根据 BigQuery 中多个表的数据生成 CSV 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60864325/

相关文章:

java - 在 Java 中分割行并填充数组并跳过空白值

go - BigQuery golang 客户端 : which context to use?

java - 如何从用户输入字符串中获取日期、月份和年份,例如 25/03/2012

java - 尝试使用 Maps API 查找附近地点时出现 FileNotFoundException

java - 从 UNIX 时间到日历的转换 - 存在一小时的不一致

java - 卡雷尔机器人 : Could not find or load main class

google-bigquery - 如何将 AVRO 文件中的整数值加载到 bigquery 中的日期列?

google-bigquery - BigQuery 的浏览器界面可以贴上白标吗?

java - 如何防止 Google Big Query 上的查询注入(inject)

google-apps-script - Bigquery API : Running query with destinationTable does not save results