如何使用python将本地CSV上传到google big query

2024-05-13 08:33:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用python上传一个本地CSV到googlebigquery

def uploadCsvToGbq(self,table_name):


    load_config = {
    'destinationTable': {
    'projectId': self.project_id,
    'datasetId': self.dataset_id,
    'tableId': table_name
    }
    }

    load_config['schema'] = {
    'fields': [
    {'name':'full_name', 'type':'STRING'},
    {'name':'age', 'type':'INTEGER'},
    ]
    }
    load_config['sourceFormat'] = 'CSV'

    upload = MediaFileUpload('sample.csv',
                     mimetype='application/octet-stream',
                     # This enables resumable uploads.
                     resumable=True)
    start = time.time()
    job_id = 'job_%d' % start
    # Create the job.
    result = bigquery.jobs.insert(
    projectId=self.project_id,
    body={
    'jobReference': {
    'jobId': job_id
    },
    'configuration': {
    'load': load_config
    }
    },
    media_body=upload).execute()

    return result

当我运行这个时,它会抛出错误

"NameError: global name 'MediaFileUpload' is not defined"

是否需要任何模块,请帮助。在


Tags: csvnameselfprojectidconfigtypetable
3条回答

在GBQ中上传到csv文件最简单的方法之一是通过熊猫。只是将csv文件导入pandas(pd.read_csv文件()). 从熊猫到GBQ(df.至gbq(完整的“表”标识,项目标识=项目标识)。在

import pandas as pd
import csv
df=pd.read_csv('/..localpath/filename.csv')
df.to_gbq(full_table_id, project_id=project_id)

或者可以使用客户端api

^{pr2}$
pip install  upgrade google-api-python-client

然后在python文件的顶部写下:

^{pr2}$

但你要注意你错过了一些括号。最好写:

result = bigquery.jobs().insert(projectId=PROJECT_ID, body={'jobReference': {'jobId': job_id},'configuration': {'load': load_config}}, media_body=upload).execute(num_retries=5)

顺便说一句,您将上载所有CSV行,包括定义列的最上面的一行。在

相关问题 更多 >