如何将每个给定长度的行的 Bigquery 表提取到 Google Storage 中的 csv 文件?

Posted

技术标签:

【中文标题】如何将每个给定长度的行的 Bigquery 表提取到 Google Storage 中的 csv 文件?【英文标题】:How to extract Bigquery table for every given length of rows to csv file in Google Storage? 【发布时间】:2019-04-30 04:35:08 【问题描述】:

例如,我在 bigquery 中有一个包含 1000 万行的表,我想每隔 100000 行将这个表提取到 Google 存储中。为了清楚起见,我想要 100 个 csv 文件,每个文件在 bigquery 表中有 100k 不同的行。

bq extract --noprint_header dataeset.abigtable gs://bucket/output/*.csv

将上述代码输入 gcloud shell 后,表格将在 google 存储中拆分为 10 个左右的文件。但是,我无法控制每个文件中有多少行。我怎么能控制它?

【问题讨论】:

您无法控制它,因为 BigQuery 导出不支持它。 “当您将数据导出到多个文件时,文件的大小会有所不同。” cloud.google.com/bigquery/docs/exporting-data 好吧,如果拆分的数量是固定的。我想至少我可以在像limit 1000k offset 2000k 这样的大查询中对表进行分区,然后提取数据。如果我可以编写脚本并执行循环工作,那会容易得多。但是我不知道我应该在哪里运行这个循环以及如何运行。是否有任何代码可以在 Google Shell 中运行并完成我的任务? “分割数”是什么意思?您也无法控制将创建多少个文件/分片。 【参考方案1】:

没有flag 可用于使您的用例成为可能。如果您认为此功能会有所帮助,您可以将其归档为 feature request,尽管需要一些星号才能让 BigQuery 团队优先考虑此功能请求。为了使其更有意义,应该有一个业务用例来说明您为什么需要这样的用例(例如,为什么您需要导出的 csv 文件每个有 100k 行?)。

【讨论】:

以上是关于如何将每个给定长度的行的 Bigquery 表提取到 Google Storage 中的 csv 文件?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 BigQuery 的开始日期和结束日期之间复制生成日期的行?

Excel VBA获取选定数据透视表行的项目详细信息

Big Query:如何提取数据集的每个表创建时间?

如何将 BigQuery 查询结果保存到另一个表?

如何禁止向BigQuery加载重复的行?

BigQuery 最大查询长度字符可以解决