看起来我可以使用 cbt 读取带有前缀键的行
cbt -project someproject -instance someinstance read sometable prefix=abc
那么我如何使用 cbtcommand 来删除上述命令选择的那些行呢?
为了能够仅使用
cbt
来完成此操作,您需要解析读取命令的输出并迭代每个结果,对特定行执行 deleterow 命令。
或者,您可以使用 Bigtable 的客户端库之一,这会快得多。
与 Java 客户端一样,您也会在其他客户端中找到相同的功能,例如 C# 客户端库的 DropRowRangeRequest 类。
编辑: 要仅使用 cbt 删除几行,您可以使用如下内容:
for x in `cbt -project my-project -instance my-instace read my-table prefix=abc | grep "abc"`; do
cbt -project my-project -instance my-instace deleterow my-table $x;
done
最后一个建议很棒 - 对于不包含“原始字节”(即空白)的行键。
就我而言,我确实有数十万个行键被错误插入,我必须找到一种方法来实现它们的删除。
根据谷歌,[1]https://cloud.google.com/bigtable/docs/cbt-reference 它说“row-key:字符串或原始字节。原始字节必须用单引号括起来并带有美元-”
所以我使用的 cbt deleterow 类似于下面的内容:
对于
cbt -project my-project -instance my-instace read my-table prefix=abc | grep "abc"
中的 x;做
cbt -project my-project -instance my-instace deleterow my-table $'$x'; echo $x'已删除'
完成
但它不会删除行键,尽管 $x 显示格式正确:
$'KMOFUS#1234567890#'
并且它抛出消息“错误参数“OF””
关于如何解决这个问题有任何想法或指导吗?
提前致谢