【发布时间】:2017-04-28 01:55:16
【问题描述】:
我正在尝试将一个分区表复制到另一个分区表中。根据docs,这应该是可以的。
如果要将一个分区表复制到另一个分区表中,源表和目标表的分区规范必须匹配。
为了测试,我创建了两个具有相同架构的分区表(partition1 和partition2)。我将 3 条记录推送到 partition1 表上的分区 $20170101:
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。我希望在$20170101 分区下的partition1 中看到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 条记录。
我做错了什么?
【问题讨论】:
-
我无法确认这种行为!我只是做了你描述的所有完全相同的步骤(但在 UI 中)并得到了预期的结果 - 5 条记录。您能否仔细检查您是否按照您的描述进行操作?
-
你是如何在 UI 中复制的?如果表已经存在,则不允许这样做。它必须通过 API 完成...
-
好点。我没有使用 Google Web UI。我们使用的 UI 都是通过 API 调用实现的——所以从技术上讲,它是通过 API 实现的。但我认为,你提出的问题应该不重要。除非是 bq 命令行工具的问题
-
我使用了 CLI 工具 -
bq cp --append_table <removed>.partition2 <removed>.partition1- 它肯定不起作用。我检查了三次。 -
是的,我明白了。我在上一条评论中提到这可能是 bq cli 的问题
标签: google-bigquery