有没有一种简单的方法可以直接下载 Google BigQuery 上某个数据集中包含的所有数据?我实际上正在下载“as csv”,一个接一个地进行查询,但它不允许我获得超过 15k 行,并且我需要下载的行超过 5M。谢谢
4 回答
您可以使用 Web UI、命令行工具或 BigQuery API 运行 BigQuery 提取作业。可以提取数据
例如,使用命令行工具:
首先使用以下说明安装和验证: https ://developers.google.com/bigquery/bq-command-line-tool-quickstart
然后确保您有一个可用的 Google Cloud Storage 存储桶(为此请参阅Google Cloud Console )。
然后,运行以下命令:
bq extract my_dataset.my_table gs://mybucket/myfilename.csv
更多关于通过 API 提取数据的信息: https ://developers.google.com/bigquery/exporting-data-from-bigquery
详细分步下载大型查询输出
启用计费
您必须将您的信用卡号提供给 Google 以导出输出,并且您可能需要付费。
但是免费配额(1TB 的已处理数据)应该足以满足许多爱好项目。
创建一个项目
将计费与项目相关联
做你的查询
创建一个新数据集
如果输出非常大,请单击“显示选项”并启用“允许大结果”
将查询结果导出到数据集中的表中
在 Cloud Storage 上创建一个存储分区。
将表导出到 Cloud Storage 上创建的 bucked。
确保单击 GZIP 压缩
使用类似的名称
<bucket>/prefix.gz
。如果输出非常大,则文件名必须带有星号
*
,并且输出将被拆分为多个文件。
将表格从云存储下载到您的计算机。
如果大文件被拆分,似乎无法从 Web 界面下载多个文件,但您可以安装
gsutil
并运行:gsutil -m cp -r 'gs://<bucket>/prefix_*' .
另请参阅:将文件和文件夹从 Google Storage 存储桶下载到本地文件夹
gsutil
Ubuntu 16.04 中有一个,但它是一个不相关的包。您必须按照以下说明进行安装和设置:https ://cloud.google.com/storage/docs/gsutil
本地解压:
for f in *.gz; do gunzip "$f"; done
对于python,您可以使用以下代码,它将数据下载为数据框。
from google.cloud import bigquery
def read_from_bqtable(bq_projectname, bq_query):
client = bigquery.Client(bq_projectname)
bq_data = client.query(bq_query).to_dataframe()
return bq_data #return dataframe
bigQueryTableData_df = read_from_bqtable('gcp-project-id', 'SELECT * FROM `gcp-project-id.dataset-name.table-name` ')
是的,Michael Manoochehri 建议的步骤是从 Google Bigquery 导出数据的正确且简单的方法。
我已经编写了一个 bash 脚本,因此您不需要每次都执行这些步骤,只需使用我的 bash 脚本即可。以下是 github 网址:
https ://github.com/rajnish4dba/GoogleBigQuery_Scripts
范围:
1. 根据您的 Big Query SQL 导出数据。
2.根据你的表名导出数据。
3. 将您的导出文件传输到 SFTP 服务器。
试试看,让我知道您的反馈。
帮助使用 ExportDataFromBigQuery.sh -h