我有两个项目。我将数据存储在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/