如何删除Cassandra列家族中的所有数据?
我正在寻找一种方法来删除cassandra中给定列族的所有行。
这相当于SQL中的TRUNCATE TABLE
。
您可以使用truncate
thrift调用或CQL中的TRUNCATE <table>
命令。
你也可以通过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;
在Astyanax非常简单。 只是一个单线语句
/* keyspace variable is Keyspace Type */ keyspace.truncateColumnFamily(ColumnFamilyName);
如果您使用的是Hector,那也很容易:
cluster.truncate("our keyspace name here", "your column family name here");
如果你使用的是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
取决于你的版本。
如果您正在进行群集设置,则只能在群集的所有节点都处于UP状态时使用truncate。
通过使用truncate,我们会错过数据(我们不确定数据的重要性)
所以非常安全的方法以及删除数据的一个技巧就是使用COPY命令,
1)使用拷贝cassandra cmd备份数据
copy tablename to 'path'
2)使用linux cp cmd复制文件
cp'srcpath''dstpath'
3)在dstpath中编辑重复的文件,删除所有行期望第一行。
保存文件。
4)使用复制cassandra cmd导入
copy tablename from 'dst path'