当前位置: 首页 > 知识库问答 >
问题:

使用BigQuery API执行python插入作业时登录失败

微生翼
2023-03-14

我试图通过设置服务器身份验证将本地文件加载到bigquery。我已经完成了以下步骤

>

gcloud auth激活服务帐户命令

使用登录

gcloud身份验证登录

正在尝试执行python脚本以将文件上载到BigQuery

范围=

['https://www.googleapis.com/auth/bigquery',
         'https://www.googleapis.com/auth/bigquery.insertdata']

credentials = ServiceAccountCredentials.from_json_keyfile_name(
    '/path/privatekey.json', scopes)
# Construct the service object for interacting with the BigQuery API.
service = build('bigquery', 'v2', credentials=credentials)

# Load configuration with the destination specified.
load_config = {
    'destinationTable': {
        'projectId': "project id",
        'datasetId': "data set id",
        'tableId': "table name"
    }
}

# Setup the job here.
# load[property] = value
load_config['schema'] = {
    'fields': [
        <several field>
    ]
}


upload = MediaFileUpload('/path/to/csv/file',
                         mimetype='application/octet-stream',
                         # This enables resumable uploads.
                         resumable=True)
# End of job configuration.

run_load.start_and_wait(service.jobs(),
                        "my project id",
                        load_config,
                        media_body=upload)

结果是

   "error": {
    "errors": [
   {
    "domain": "global",
    "reason": "required",
    "message": "Login Required",
    "locationType": "header",
    "location": "Authorization"
   }
  ],
  "code": 401,
  "message": "Login Required"
 }
}

但我有足够的权限创建查询作业

query_request = service.jobs()
query_data = {
    'query': (
        'SELECT COUNT(*) FROM [dmrebg.testDay];')
}

query_response = query_request.query(
    projectId=project_id,
    body=query_data).execute()

print('Query Results:')
for row in query_response['rows']:
    print('\t'.join(field['v'] for field in row['f']))

我错过了什么?我以为我已经登录了。

共有1个答案

姚星腾
2023-03-14

问题是,任何打电话给https://www.googleapis.com/bigquery/v2/projects/project_id/jobs/*也会导致同样的问题

{
  "error": {
    "errors": [
   {
    "domain": "global",
    "reason": "required",
    "message": "Login Required",
    "locationType": "header",
    "location": "Authorization"
   }
  ],
  "code": 401,
  "message": "Login Required"
 }
}

所以我的浏览器auth有问题,python auth很好。

根本原因是我的CSV模式和数据不匹配。

Errors:
Too many errors encountered. (error code: invalid)
 类似资料:
  • 我知道很多人都问过类似的问题,但我想知道如何使用python登录gmail(或google帐户)。我已经有了一个代码(见下文),可以使用selenium将用户登录到gmail。然而,我注意到了一些问题。 程序停止/关闭时浏览器关闭。 它无法检测到失败的登录。 这两个问题都需要解决,我才能完成我的项目。我不介意使用像pyautogui这样的selenium以外的东西来打开google。但是,它需要能

  • 假设我有下表: 我需要一个查询,将插入不存在的标签,并返回所有请求的标签ID。考虑以下事项: 此查询的输出是: 我需要的是在输出中有。

  • 我是解析的新手,我对解析UI登录和解析UI小部件有一些问题。 在我的项目中将ParseLoginUI作为一个模块导入后,我单击了run app按钮,错误发生了。 我与Han有完全相同的问题(错误:任务执行失败:app:dexDebug’。将ParseLoginUI作为模块导入时),但是,他提供的解决方案对我不起作用。。 我还可能提到,我不知道说明书中的“克隆项目”是什么意思,我下载了zip并从“我

  • 我正在寻求登录gmail帐户并使用python脚本下载一些电子邮件的帮助。我正在尝试采用这里找到的方法,但我在步骤1中遇到了一个问题,即通过imap访问帐户。 下面是我要开始的代码: 我得到以下错误: 在gmail设置中确实启用了Imap。我已经查看了google支持链接上的说明,以及类似情况下有关此错误的问题,例如这里和这里,但我的情况与第一次不同,因为1)它从一开始就不起作用,2)我没有经常运

  • null 通常,代码做它应该做的事情。但是,当从API收集一个大数据集(大约500.000个JSON文件)时,bigquery插入作业在使用DataFlow Runner时(它与在我的计算机上执行的DirectRunner一起工作)启动后立即停止(=在一秒钟内),而没有特定的错误消息。当使用较小的数据集时,一切都很好。 数据流日志如下: 按照建议使用bq cli工具来获取有关bq加载作业的更多信息

  • 当然,当我执行这项工作时,它失败了,我被困住了...我真的很感激,如果谁已经与rundeck执行塔伦德乔布斯可以帮助我!