55

我正在寻找一种方法来删除 cassandra 中给定列族中的所有行。

这相当于TRUNCATE TABLE在 SQL 中。

4

6 回答 6

84

您可以使用truncatethrift 调用或TRUNCATE <table>CQL 中的命令。

http://www.datastax.com/docs/1.0/references/cql/TRUNCATE

于 2012-05-09T17:17:33.687 回答
9

您也可以通过 Cassandra CQL 执行此操作。

$ cqlsh
Connected to Test Cluster at localhost:9160.
[cqlsh 4.1.1 | Cassandra 2.0.6 | CQL spec 3.1.1 | Thrift protocol 19.39.0]
Use HELP for help.
cqlsh> TRUNCATE my_keyspace.my_column_family;
于 2014-04-18T03:34:10.273 回答
6

它在 Astyanax 中非常简单。只是一个单行语句

/* keyspace variable is Keyspace Type */
keyspace.truncateColumnFamily(ColumnFamilyName); 
于 2012-05-11T06:37:26.727 回答
3

如果您使用的是 Hector,它也很容易:

cluster.truncate("our keyspace name here", "your column family name here");
于 2013-06-04T14:37:30.577 回答
3

如果您使用的是 cqlsh,那么您可以通过 2 种方式进行操作

  1. use keyspace; 接着truncate column_family;
  2. truncate keyspace.column_family;

如果您想使用 DataStax Java 驱动程序,可以查看 - http://www.datastax.com/drivers/java/1.0/com/datastax/driver/core/querybuilder/QueryBuilder.htmlhttp://www。 datastax.com/drivers/java/2.0/com/datastax/driver/core/querybuilder/Truncate.html

取决于你的版本。

于 2014-06-19T10:40:41.810 回答
0

如果您正在处理集群设置,则只能在集群的所有节点都 UP 时使用 truncate。

通过使用截断,我们会丢失数据(我们不确定数据的重要性)

所以非常安全的方法以及删除数据的技巧是使用 COPY 命令,

1) 使用复制 cassandra cmd 备份数据
copy tablename to 'path'


2) 使用 linux cp cmd cp 'src path' 'dst path'复制文件

3) 编辑 dst 路径中的重复文件,删除除第一行之外的所有行。
保存文件。

4)使用复制cassandra cmd 导入
copy tablename from 'dst path'

于 2015-09-21T16:54:53.267 回答