如何删除Cassandra列族中的所有数据?

时间:2012-05-09 16:20:45

标签: cassandra

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

这相当于SQL中的TRUNCATE TABLE

6 个答案:

答案 0 :(得分:82)

您可以在CQL中使用truncate节俭调用或TRUNCATE <table>命令。

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

答案 1 :(得分: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;

答案 2 :(得分:6)

在Astyanax非常简单。只是单行声明

/* keyspace variable is Keyspace Type */
keyspace.truncateColumnFamily(ColumnFamilyName); 

答案 3 :(得分:3)

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

cluster.truncate("our keyspace name here", "your column family name here");

答案 4 :(得分:3)

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

  1. use keyspace;然后truncate column_family;
  2. truncate keyspace.column_family;
  3. 如果您想使用DataStax Java驱动程序,您可以查看 - http://www.datastax.com/drivers/java/1.0/com/datastax/driver/core/querybuilder/QueryBuilder.html 要么 http://www.datastax.com/drivers/java/2.0/com/datastax/driver/core/querybuilder/Truncate.html

    取决于您的版本。

答案 5 :(得分:0)

如果您正在进行群集设置,则只能在群集的所有节点都已启动时使用truncate。

通过使用truncate,我们将错过数据(我们不确定数据的重要性)

因此,删除数据的非常安全的方法和技巧是使用COPY命令,

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

2)使用linux cp cmd
复制文件 cp&#39; src路径&#39; &#39; dst path&#39;

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

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