如何使用 cbt set(cloud bigtable 命令行工具)格式化字节字符串以设置值?
How to format a byte string to set a value with cbt set (cloud bigtable command line tool)?
我在 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 不够熟悉,无法从那里弄明白。
根据此 issue,您无法使用 cbt 传递任意字节。您提供的时间戳被 cbt 像字符串一样处理,这就是它被转义的原因。
从当前文档来看,这可以使用 $'\' 来完成
我从文档中添加了一个示例以供查找:
cbt -project my-project -instance my-instance lookup my-table $'472W5:5d3715\'
更多信息请参考cbt参考资料:
https://cloud.google.com/bigtable/docs/cbt-reference
我在 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 不够熟悉,无法从那里弄明白。
根据此 issue,您无法使用 cbt 传递任意字节。您提供的时间戳被 cbt 像字符串一样处理,这就是它被转义的原因。
从当前文档来看,这可以使用 $'\' 来完成 我从文档中添加了一个示例以供查找:
cbt -project my-project -instance my-instance lookup my-table $'472W5:5d3715\'
更多信息请参考cbt参考资料: https://cloud.google.com/bigtable/docs/cbt-reference