BigQuery使用LoadJobConfig导入数据报destination属性未知错误如何解决
报错原因
AttributeError: Property destination is unknown for <class 'google.cloud.bigquery.job.load.LoadJobConfig'> 报错的核心原因是 LoadJobConfig 类本身没有设计destination属性,你混淆了BigQuery不同任务类型的配置规则:
- 查询任务(
QueryJob)对应的QueryJobConfig确实需要配置destination属性来指定查询结果的输出表 - 数据加载任务(
LoadJob)的目标表不需要在JobConfig中配置,而是直接作为client.load_table_from_dataframe()方法的入参传入,你代码里已经把目标表table_ref作为第二个参数传给了加载方法,额外给LoadJobConfig加destination属性属于无效的错误配置。
这个问题和云平台侧的权限、表配置无关,纯属于Python SDK的API用法错误。
解决方案
直接删除代码里多余的job_config.destination = table_ref这一行即可,调整后的代码参考:
# 建立BigQuery客户端 client = bigquery.Client.from_service_account_json(SERVICE_ACCOUNT_FILE) dataset_id = BQ_DATASET_NAME table_name = BQ_TABLE_NAME # 初始化加载任务配置 job_config = bigquery.LoadJobConfig() # 生成目标表引用 table_ref = client.dataset(dataset_id).table(table_name) # 配置写入模式为追加 job_config.write_disposition = 'WRITE_APPEND' # 执行DataFrame写入BigQuery任务,目标表直接作为方法参数传入 load_job = client.load_table_from_dataframe(result, table_ref, job_config=job_config) load_job.result()
内容的提问来源于stack exchange,提问作者sitestem
相关产品推荐
相关产品推荐

