复制分区的bigquery表,该表仅覆盖源表中的分区

时间:2018-06-20 20:50:52

标签: google-bigquery

类似

bq cp -f src_table dst_table

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

如果我很了解您的问题,您打算仅将表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]