我有两个项目。我将数据存储在 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 Access Denied: File gs://project_A/: Access Denied
最佳答案
您必须确保 service_acct_B
具有对 project_A
的存储访问权限:
在project_A
中,
- 转至
IAM 和管理
- 添加具有(至少)
存储对象查看者
角色的成员service_acct_B
事实上,您在这里并不使用/不需要service_acct_A
,因此
proj_a_client = storage.Client.from_service_account_json(service_acct_A.json)
是多余的。
关于python - 如何在Python中将一个项目的存储桶中的数据加载到另一个项目的表中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50751413/