小编Tee*_*jay的帖子

如何使用 python 将本地 CSV 上传到 Google 大查询

我正在尝试使用 python 将本地 CSV 上传到 google big query

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
Run Code Online (Sandbox Code Playgroud)

当我运行它时它会抛出错误,例如

“NameError:全局名称‘MediaFileUpload’未定义” …

python csv google-bigquery

4
推荐指数
1
解决办法
5318
查看次数

使用服务帐户的 Doubleclickbid 管理器 api

我正在尝试访问 dbm api ,我正在使用服务帐户验证 url,请查找下面的示例代码

from oauth2client.service_account import ServiceAccountCredentials
from apiclient.discovery import build
from httplib2 import Http

scopes =['https://www.googleapis.com/auth/doubleclickbidmanager']


credentials = ServiceAccountCredentials.from_json_keyfile_name(
'path/to/key/.jsonfile', scopes=scopes)

http_auth = credentials.authorize(Http())
body={}

dbm = build('doubleclickbidmanager', 'v1', http=http_auth)
print dbm
request = dbm.lineitems().downloadlineitems(body=body).execute()

print request
Run Code Online (Sandbox Code Playgroud)

如果我使用oauth机制来验证 url,则代码可以正常运行,因为我不需要用户交互,所以我需要服务器到服务器机制,所以我使用了服务帐户

我尝试过的步骤:

我已经创建了服务帐户并下载了json密钥文件并在代码中使用,但是当我尝试运行我的代码时,它会抛出以下错误:

googleapiclient.errors.HttpError: <HttpError 403 when requesting https://www.googleapis.com/doubleclickbidmanager/v1/lineitems/downloadlineitems?alt=json returned "You are not authorized to use DoubleClick Bid Manager API. Please contact dbm-support@google.com.">
Run Code Online (Sandbox Code Playgroud)

请帮忙,提前致谢。

python google-api service-accounts google-admin-sdk double-click-advertising

4
推荐指数
1
解决办法
1793
查看次数