我正在尝试将一个分区表复制到另一个分区表中。根据{{3}},这应该是可能的。
如果要将分区表复制到另一个分区表中,源表和目标表的分区规范必须匹配。
为了测试,我使用相同的架构创建了两个分区表(partition1
& partition2
)。我将3条记录推送到$20170101
表格中的分区partition1
:
echo '{"a":1, "b":2}' | bq insert '<removed>.partition1$20170101'
echo '{"a":1, "b":2}' | bq insert '<removed>.partition1$20170101'
echo '{"a":1, "b":2}' | bq insert '<removed>.partition1$20170101'
看起来不错:
接下来,我将2条记录推送到partition2
表和同一分区($20170101
):
echo '{"a":1, "b":2}' | bq insert '<removed>.partition2$20170101'
echo '{"a":1, "b":2}' | bq insert '<removed>.partition2$20170101'
同样,这看起来不错:
现在,我想将partition2
附加到partition1
。我希望在partition1
分区下的$20170101
中看到5条记录:
bq cp --append_table <removed>.partition2 <removed>.partition1
Waiting on bqjob_r6d160e17a3b7b733_0000015bb238aa54_1 ... (0s) Current status: DONE
Tables '<removed>.partition2' successfully copied to '<removed>.partition1'
但是,partition1
仍然只有3条记录。
我做错了什么?
答案 0 :(得分:2)
这是我安装的gcloud
工具版本中的错误。我更新了它,然后它按预期工作。
执行命令
gcloud components update
答案 1 :(得分:0)
我已经尝试过从gcloud这样的命令,它可以--
bq cp -a '<source_project>:<source_dataset>.<source_table>$20180605' <destination_project>:<destination_dataset>.<destination_table>
它完全可以正常工作... 注意:-在上面的命令中,不需要提及目标分区值/信息。它会自动从源分区的数据/值中获取数据。