2016-03-24 53 views
0

我想上传一个本地的CSV使用python如何上传本地CSV使用python

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 

谷歌大查询给Google大查询,当我运行这个它抛出错误,如

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

是否需要任何模块请帮忙。

+0

从哪里得到类名“MediaFileUpload”? – LeeNeverGup

+0

http://stackoverflow.com/questions/25048787/loading-json-file-in-bigquery-using-google-bigquery-client-api我试过这个例子 – Teejay

回答

1
pip install --upgrade google-api-python-client 

然后在你的Python文件写入的顶部:

from googleapiclient.http import MediaFileUpload 

但是不管你错过一些括号。更好地写:

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

顺便说一下,你要上传所有的CSV行,包括顶部定义列的行。

相关问题