我有两个项目。我将数据存储在project_A中,并在project_B中构建表。我为它们两个都创建了service_account.json,但是当我需要从project_A加载数据并在project_B中建立表时,我不知道如何同时使用两个文件。

数据存储在URI中:

gs://project_A//*


该表将位于project_B表名huge_table

from google import storage, bigquery

proj_a_client =  storage.Client.from_service_account_json(service_acct_A.json)
proj_b_client = bigquery.Client.from_service_account_json(service_acct_B.json)

dest_table = proj_b_client.dataset('DS_B').table('huge_table')
uri = 'gs://project_A//*'

job_config = bigquery.LoadJobConfig()
load_job = proj_b_client.load_table_from_uri(uri,
                                         dest_table,
                                         job_config=job_config)


但是我得到了错误:


  google.api_core.exceptions.Forbidden:403访问被拒绝:文件
  gs:// project_A /:拒绝访问

最佳答案

您必须确保service_acct_B具有对project_A的存储访问权限:

project_A中,


转到IAM & admin
添加(至少)具有service_acct_B角色的成员Storage Object Viewer


实际上,您在这里不需要使用/ cc,因此
service_acct_A是多余的。

关于python - 如何从python的一个项目的存储桶中的数据加载到另一个项目的表中?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50751413/

10-10 20:59
查看更多