【问题标题】:Clone BigQuery Project to another account将 BigQuery 项目克隆到另一个帐户
【发布时间】:2020-05-14 15:29:29
【问题描述】:

由于业务发生变化,我需要将整个 BigQuery 项目从一个帐户复制到另一个帐户,而且这些帐户不相关且无法以任何方式链接。

通过 CLI,我能够将表导出到数据集中的 Cloud Storage。此外,数据集中的列表看起来是可能的,因此循环它应该不是问题。

但是我找不到任何合适的方法来管理数据集,既不能导出也不能在新帐户中创建,所以它留下了很多手动任务。

我错过了什么?有一种方法可以导出包含所有数据集的整个项目,或者总是需要手动任务?

数据结构一点也不复杂:

     Project -> dataset -> table
                        -> table
                        -> ...

             -> dataset -> table
                        -> table
                        -> ...
             -> ...

【问题讨论】:

  • 如果答案有用,请考虑接受并点赞。您可以点击 ✓ 接受它并点击 ▲

标签: google-cloud-platform google-bigquery google-cloud-storage


【解决方案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)

【讨论】:

【解决方案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

    【讨论】:

      猜你喜欢
      • 2022-01-09
      • 2019-01-28
      • 2016-09-18
      • 2017-02-05
      • 1970-01-01
      • 1970-01-01
      • 2014-04-29
      • 2019-07-18
      • 2021-06-29
      相关资源
      最近更新 更多