在Big查询中将表数据作为CSV下载到本地计算机

时间:2016-03-28 07:15:52

标签: python google-bigquery

def downloadGbqToCsv(self,table_name,csv):

        credentials = GoogleCredentials.get_application_default()
    bigquery = discovery.build('bigquery', 'v2', credentials=credentials)

        job_data = {
        'sourceTable': {
                    'projectId': self.project_id,
                    'datasetId': self.dataset_id,
                    'tableId': table_name,
                },
                'destinationUris': 'path/to/download',
                'destinationFormat': 'CSV',
                'compression': 'NONE'
        }


        start = time.time()
        job_id = 'job_%d' % start
        # Create the job.

        result = bigquery.jobs().insert(projectId=self.project_id,body=job_data).execute()

        return result

如何以CSV格式将表数据下载到本地计算机?

2 个答案:

答案 0 :(得分:1)

运行提取作业以将表格导出为所需格式的Google云端存储,然后您可以使用任何GCS工具将文件下载到本地文件系统。

以下是提取作业配置示例:https://cloud.google.com/bigquery/exporting-data-from-bigquery#extractconfig

我使用gsutil将文件从GCS复制到我的本地驱动器。

如果要将表直接复制到本地驱动器,则必须使用tabledata.list逐行列出表,并在本地将其转换为输出格式。 bq命令head以这种方式工作,例如:

  

bq --format = csv head -n 100 project:dataset.table

但是只下载前100行。 bq客户端不支持以这种方式列出整个表,因为它太慢了。但是,如果您的数据量很小,那么它将对您有用。

答案 1 :(得分:0)

在Big Query中执行查询和存储在本地计算机中是非常间接的,我已打包代码并希望它有所帮助。

Packages version:
google-cloud (0.27.0)
google-cloud-bigquery (0.26.0)
google-cloud-storage (1.3.1)

https://github.com/IcarusSO/bigQueryExporter