将 BigQuery 项目克隆到另一个帐户
Posted
技术标签:
【中文标题】将 BigQuery 项目克隆到另一个帐户【英文标题】:Clone BigQuery Project to another account 【发布时间】:2020-05-14 15:29:29 【问题描述】:由于业务发生变化,我需要将整个 BigQuery 项目从一个帐户复制到另一个帐户,而且这些帐户不相关且无法以任何方式链接。
通过 CLI,我能够将表导出到数据集中的 Cloud Storage。此外,数据集中的列表看起来是可能的,因此循环它应该不是问题。
但是我找不到任何合适的方法来管理数据集,既不能导出也不能在新帐户中创建,所以它留下了很多手动任务。
我错过了什么?有一种方法可以导出包含所有数据集的整个项目,或者总是需要手动任务?
数据结构一点也不复杂:
Project -> dataset -> table
-> table
-> ...
-> dataset -> table
-> table
-> ...
-> ...
【问题讨论】:
如果答案有用,请考虑接受并点赞。您可以点击 ✓ 接受它并点击 ▲ 【参考方案1】:您不能一次复制整个项目,但您可以尝试使用Python
中的脚本自动复制,如下所示:
from google.cloud import bigquery
import os
source_project = "<your source project>"
new_project = "<your new project>"
#I suppose that you have access to the source project in your new project
client = bigquery.Client(project=source_project)
datasets = []
#List all the datasets in the source project and save it in a list
for i in client.list_datasets():
datasets.append(i.dataset_id)
#For all the datasets, build the commands and then execute them
for i in datasets:
create_command = "bq mk -d " + i
copy_command = "bq mk --transfer_config --project_id=" + new_project + " --data_source=cross_region_copy --target_dataset=" + i + " --display_name='My Dataset Copy' --params='\"source_dataset_id\":\"" + i + "\",\"source_project_id\":\"" + source_project + "\",\"overwrite_destination_table\":\"true\"'"
os.system(create_command)
os.system(copy_command)
【讨论】:
我刚刚意识到,bq mk --transferconfig
命令在数据传输中每 24 小时创建一个循环副本。
是的。如果需要,可以使用 --schedule 参数并指定不同的计划 (cloud.google.com/appengine/docs/standard/python/config/…)。【参考方案2】:
您可以为此使用Bigquery Data Transfer service。您不能复制所有项目,而是复制每个数据集的数据集。如果你有很多数据集,你可以编写这个脚本。
注意,你不是从源项目导出到目标项目,而是从源项目导入到目标项目(我的意思是你必须在目标项目中定义转移)
【讨论】:
【参考方案3】:要将数据集从一个项目复制到另一个项目,则可以使用以下命令进行传输作业:
bq mk --transfer_config --project_id=[PROJECT_ID] --data_source=[DATA_SOURCE] --target_dataset=[DATASET] --display_name=[NAME] --params='[PARAMETERS]'
其中 PROJECT_ID :目标项目 ID 数据源:cross_region_copy 数据集:目标数据集 NAME :您的工作的显示名称。 PARAMETERS : 可以定义源项目 ID、源数据集 ID 和其他参数(覆盖目标表等)
详细解释可以通过这个link。
【讨论】:
以上是关于将 BigQuery 项目克隆到另一个帐户的主要内容,如果未能解决你的问题,请参考以下文章
将 Google Cloud Platform 项目从一个帐户移动到另一个帐户