我正在寻找一种方法来删除cassandra中给定列族的所有行。
这相当于SQL中的TRUNCATE TABLE
。
答案 0 :(得分:82)
您可以在CQL中使用truncate
节俭调用或TRUNCATE <table>
命令。
答案 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,那么您可以通过两种方式执行此操作
use keyspace
;然后truncate column_family;
truncate keyspace.column_family;
如果您想使用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'