【问题标题】:Copy partitioned bigquery table that only overwrites the partitions from the source table复制仅覆盖源表中的分区的分区 bigquery 表
【发布时间】:2018-06-20 20:50:52
【问题描述】:

类似

bq cp -f src_table dst_table

但我希望 dst_table 中不存在于 src_table 中的分区保持未被覆盖。这样的事情可能吗?

【问题讨论】:

    标签: google-bigquery


    【解决方案1】:

    你可以这样做:

    使用此查询为 bq 命令构建脚本

    #legacySql        
    select concat ('bq cp -f ', s.project_id, ':', s.dataset_id, '.', 
    s.table_id, '\$', s.partition_id, ' ', 
    t.project_id, ':', t.dataset_id, '.', t.table_id, '\$', t.partition_id, ';') 
    from [source_table$__PARTITIONS_SUMMARY__] s
    inner join (select * from [target_table$__PARTITIONS_SUMMARY__]) t
    on t.partition_id = s.partition_id
    

    然后在终端执行结果 确保您转义了 $ - 此代码适用于 Mac/Unix - 不确定 Windows

    【讨论】:

      【解决方案2】:

      如果我很好理解您的问题,您打算将表 1 中填写的分区从一个分区表(表 1)复制到另一个分区表(表 2)。

      您必须配置执行操作所需的权限as described here。在你的情况下,使用bq cp -a 来

      将源分区中的数据附加到现有表或 目标数据集中的分区

      而不是bq cp -f,它会强制覆盖。例如:

      bq --location=[LOCATION] cp -a -f -n [PROJECT_ID]:[DATASET].[SOURCE_TABLE]$[SOURCE_PARTITION] [PROJECT_ID]:[DATASET].[DESTINATION_TABLE]$[DESTINATION_PARTITION]
      

      【讨论】:

        猜你喜欢
        • 2018-11-22
        • 2020-05-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多