Pandas 本地导出大查询表

Pandas 本地导出大查询表,pandas,google-cloud-platform,google-bigquery,Pandas,Google Cloud Platform,Google Bigquery,我有一个大的查询表,我想使用pandas DataFrame运行它。该表很大,使用:pd.read_gpq()函数时会卡住,无法检索数据 我使用pandas实现了一个块机制,该机制可以正常工作,但获取需要很长时间(对于9M行,需要一个小时)。所以我在寻找一个新的解决方案 我想将该表作为csv文件下载到,然后读取它。我在谷歌云文档中看到了以下代码: # from google.cloud import bigquery # client = bigquery.Client() # bucket_n

我有一个大的查询表,我想使用pandas DataFrame运行它。该表很大,使用:pd.read_gpq()函数时会卡住,无法检索数据

我使用pandas实现了一个块机制,该机制可以正常工作,但获取需要很长时间(对于9M行,需要一个小时)。所以我在寻找一个新的解决方案

我想将该表作为csv文件下载到,然后读取它。我在谷歌云文档中看到了以下代码:

# from google.cloud import bigquery
# client = bigquery.Client()
# bucket_name = 'my-bucket'
project = 'bigquery-public-data'
dataset_id = 'samples'
table_id = 'shakespeare'

destination_uri = 'gs://{}/{}'.format(bucket_name, 'shakespeare.csv')
dataset_ref = client.dataset(dataset_id, project=project)
table_ref = dataset_ref.table(table_id)

extract_job = client.extract_table(
    table_ref,
    destination_uri,
    # Location must match that of the source table.
    location='US')  # API request
extract_job.result()  # Waits for job to complete.

print('Exported {}:{}.{} to {}'.format(
    project, dataset_id, table_id, destination_uri))
但示例中显示的所有URI都是google cloud Bucket URI,而不是本地URI,我没有下载它(试图放置一个本地URI,这给了我一个错误)

有没有一种方法可以不使用bucket将表的数据下载为csv文件

如前所述

bigquery导出的限制是-不能将数据导出到本地文件或Google Drive,但可以将查询结果保存到本地文件。唯一受支持的导出位置是云存储

有没有一种方法可以不使用bucket将表的数据下载为csv文件

现在我们知道,我们可以将查询结果存储到本地文件中,这样您就可以使用如下内容:

from google.cloud import bigquery

client = bigquery.Client()

# Perform a query.
QUERY = (
    'SELECT * FROM `project_name.dataset_name.table_name`')
query_job = client.query(QUERY)  # API request
rows = query_job.result()  # Waits for query to finish

for row in rows:
    print(row.name)
此rows变量将包含所有表行,您可以直接使用它,也可以将其写入本地文件