如何使用cbt set(cloud bigtable命令行工具)格式化字节字符串以设置值?

时间:2019-05-27 15:05:06

标签: command-line bigtable google-cloud-bigtable

我在Bigtable中有一个存储时间戳的字段。使用cbt lookup,字段将显示为"\x00\x00\x01d\x865W\x00"

此字节串可以转换为整数,例如通过Python。

int.from_bytes(b"\x00\x00\x01d\x865W\x00",'big')
1531260000000

1531260000000是Unix时间戳(以微秒为单位)。将Converting更改为易于理解的格式,即可得到2018-07-10T22:00:00+00:00

如何使用 cbt 将此字段更新为其他时间戳?

docs我们得到命令

cbt set <table> <row> family:column=val

但是该值应如何格式化以正确存储它?

我尝试过cbt set mytable row1 family:timestamp=1531260000000,但是cbt lookup则将其显示为1531260000000,而不是字节串,并且BigQuery根本不显示它,因为格式错误。

我也尝试过尝试cbt set mytable row1 family:timestamp="\x00\x00\x01d\x865W\x00",但随后cbt lookup显示带有转义反斜杠的字节串,这也行不通:"\\x00\\x00\\x01d\\x865W\\x00"

我在source code中查找了cbt,但我对Go不够了解,无法从那里找出答案。

2 个答案:

答案 0 :(得分:1)

根据此issue,您不能使用cbt传递任意字节。您提供的时间戳由cbt像字符串一样处理,因此被转义了。

答案 1 :(得分:1)

从当前文档看来,可以使用$’\ 我从文档中添加了一个示例进行查找:

cbt -project my-project -instance my-instance查找my-table $'\ 224 \ 257 \ 312W \ 365:\ 205d \ 333 \ 2471 \ 315 \'

有关更多信息,请参考cbt参考: https://cloud.google.com/bigtable/docs/cbt-reference