如何使用cbt从BigTable中删除带有前缀键的行范围

问题描述 投票:0回答:2

看起来我可以使用 cbt 读取带有前缀键的行

cbt -project someproject -instance someinstance read sometable prefix=abc

那么我如何使用 cbtcommand 来删除上述命令选择的那些行呢?

bigtable google-cloud-bigtable cbt
2个回答
6
投票

为了能够仅使用

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

0
投票

最后一个建议很棒 - 对于不包含“原始字节”(即空白)的行键。

就我而言,我确实有数十万个行键被错误插入,我必须找到一种方法来实现它们的删除。

根据谷歌,[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””

关于如何解决这个问题有任何想法或指导吗?

提前致谢

© www.soinside.com 2019 - 2024. All rights reserved.