类似
bq cp -f src_table dst_table
但我希望dst_table中的src_table中不存在的分区保持未覆盖状态。这样可能吗?
答案 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]