首页 > 解决方案 > 我可以从 bigquery 导出到使用不同凭据访问的存储桶吗?

问题描述

我一直在阅读BigQuery > 文档 > 导出表数据 > 导出表数据,现在了解到我可以将数据从 bigquery 表导出到 GCS 存储桶中。此处提供的示例 Python 代码演示了在使用相同凭据访问 bigquery 表和存储桶时如何执行此操作:

destination_uri = 'gs://{}/{}'.format(bucket_name, 'shakespeare.csv')
dataset_ref = client.dataset(dataset_id, project=project)
table_ref = dataset_ref.table(table_id)

extract_job = client.extract_table(
  table_ref,
  destination_uri,
  # Location must match that of the source table.
  location='US')  # API request
extract_job.result()  # Waits for job to complete.

我想知道当使用不同的凭据访问 bigquery 表和存储桶时是否可以完成此操作。在我的实际情况中,我想做的是从 projectA 中的 bigquery 导出数据并将其存储在 projectB 拥有的存储桶中。使用不同的凭据访问 projectA 和 projectB。ProjectA 归第 3 方所有,我只能访问 bigquery,而不是任何存储桶。

这可能吗?如果可以,怎么做?我怀疑答案是否定的,但只是想我会问。

标签: google-bigquery

解决方案


如果您无权访问第 3 方存储桶,则无法执行此操作。正如Mikhail所指出的,如果您可以在未经许可的情况下上传到任何存储桶,那将是一个很大的安全漏洞。

目前,您可以提取查询并将它们保存在您的存储桶中,一旦您拥有权限,您就可以使用 Cloud Storage APIgsutil 命令将文件传输到第 3 方存储桶。


推荐阅读