【问题标题】:Exporting BigQuery table from one project to another将 BigQuery 表从一个项目导出到另一个项目
【发布时间】:2016-12-19 18:16:37
【问题描述】:

我正在尝试将存储在 Google Cloud 项目 (Project1) 中的 BigQuery 表 (Table1) 复制到另一个 Google Cloud 项目 (Project2)。该表以 TB 为单位。这样做的最佳方法是什么,这样我就不必在本地导出表?我应该将表从 Project1 导出到 Google Cloud Storage,然后再导出到 Project2?还是有更好的办法?

【问题讨论】:

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


    【解决方案1】:

    使用 bq 命令行工具将表从一个项目复制到另一个项目。您可以查看以下示例命令

    来源:

    • projectid123456789123
    • 数据集数据集1
    • 表格table1

    目的地:

    • projectid0987654321098
    • 数据集数据集2
    • 表格table2

    命令:

    bq cp 123456789123:dataset1.table1 0987654321098:dataset2.table2
    

    【讨论】:

    • 是的。这样可行。但是我已经意识到每天在 dataset1 中生成一个新的 BQ 表。我想我必须迭代每天要复制的数据价值......
    • 您是从云存储上传每日表格还是从 GAP 等其他来源转储?
    • 或者您只是想从其他项目访问该表?无需复制即可完成...
    【解决方案2】:

    如果 Source 和 Destination 在同一位置 - 即使在不同项目之间也可以使用 Copy Table

    【讨论】:

      【解决方案3】:

      如果您想将数据集从一个项目复制到另一个项目,则可以使用以下命令进行传输:

      bq mk --transfer_config --project_id=[PROJECT_ID] --data_source=[DATA_SOURCE] --target_dataset=[DATASET] --display_name=[NAME] --params='[PARAMETERS]'
      

      在哪里 PROJECT_ID :目标项目_ID DATA_SOURCE:cross_region_copy DATASET:目标数据集 NAME :显示您的工作名称。 PARAMETERS : 可以定义源项目ID、源数据集ID等参数(覆盖目标表等)

      详细解释可以通过这个link

      【讨论】:

        【解决方案4】:

        一个使用python的海量复制快速脚本

        这使用上面给出的命令@kanishka-mohaia,返回格式为json

        每个数据集的每个表都会被复制到目的地

        此脚本不负责数据集和表的创建

        import json
        import time
        from subprocess import check_output
        
        data_sets = json.loads(check_output("bq ls --format=json", shell=True).decode())
        
        FROM_PROJECT = ''
        TO_PROJECT = ''
        
        for ds_item in data_sets:
            dataset = ds_item['datasetReference']['datasetId'].strip()
        
            tables = json.loads(
                check_output(f"bq ls --format=json {dataset}", shell=True).decode())
        
            for table_item in tables:
                table = table_item['tableReference']['tableId']
                print(f"Table = {dataset}.{table}")
        
                command = f'echo y | bq cp {FROM_PROJECT}:{dataset}.{table} ' \
                          f'{TO_PROJECT}:{dataset}.{table}'
        
                print(command)
        
                try:
                    result = check_output(command, shell=True)
        
                except Exception as e:
                    continue
        
                print(result)
        
                time.sleep(5)
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2022-12-28
          • 1970-01-01
          • 2017-09-06
          • 1970-01-01
          • 1970-01-01
          • 2013-01-04
          • 1970-01-01
          相关资源
          最近更新 更多