15

有没有一种简单的方法可以直接下载 Google BigQuery 上某个数据集中包含的所有数据?我实际上正在下载“as csv”,一个接一个地进行查询,但它不允许我获得超过 15k 行,并且我需要下载的行超过 5M。谢谢

4

4 回答 4

8

您可以使用 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

于 2013-08-28T20:04:23.963 回答
7

详细分步下载大型查询输出

  1. 启用计费

    您必须将您的信用卡号提供给 Google 以导出输出,并且您可能需要付费。

    但是免费配额(1TB 的已处理数据)应该足以满足许多爱好项目。

  2. 创建一个项目

  3. 将计费与项目相关联

  4. 做你的查询

  5. 创建一个新数据集

  6. 如果输出非常大,请单击“显示选项”并启用“允许大结果”

  7. 将查询结果导出到数据集中的表中

  8. 在 Cloud Storage 上创建一个存储分区。

  9. 将表导出到 Cloud Storage 上创建的 bucked。

    • 确保单击 GZIP 压缩

    • 使用类似的名称<bucket>/prefix.gz

      如果输出非常大,则文件名必须带有星号*,并且输出将被拆分为多个文件。

  10. 将表格从云存储下载到您的计算机。

    如果大文件被拆分,似乎无法从 Web 界面下载多个文件,但您可以安装gsutil并运行:

    gsutil -m cp -r 'gs://<bucket>/prefix_*' .
    

    另请参阅:将文件和文件夹从 Google Storage 存储桶下载到本地文件夹

    gsutilUbuntu 16.04 中有一个,但它是一个不相关的包。

    您必须按照以下说明进行安装和设置:https ://cloud.google.com/storage/docs/gsutil

  11. 本地解压:

    for f in *.gz; do gunzip "$f"; done
    

这是我需要的一个示例项目,它激发了这个答案

于 2016-05-17T11:27:59.607 回答
2

对于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` ')
于 2020-05-21T18:00:04.657 回答
1

是的,Michael Manoochehri 建议的步骤是从 Google Bigquery 导出数据的正确且简单的方法。
我已经编写了一个 bash 脚本,因此您不需要每次都执行这些步骤,只需使用我的 bash 脚本即可。以下是 github 网址: https ://github.com/rajnish4dba/GoogleBigQuery_Scripts

范围:
1. 根据您的 Big Query SQL 导出数据。
2.根据你的表名导出数据。
3. 将您的导出文件传输到 SFTP 服务器。
试试看,让我知道您的反馈。
帮助使用 ExportDataFromBigQuery.sh -h

于 2016-09-01T09:13:04.067 回答