如何仅在表存在时执行TRUNCATE TABLE操作?
实现仅在表存在时执行TRUNCATE TABLE的方法
Cassandra原生CQL并不支持TRUNCATE TABLE IF EXISTS语法,要实现仅在表存在时执行截断操作,可通过以下两种方式:
通过Shell脚本结合cqlsh实现
利用bash命令先查询系统表验证表是否存在,存在则执行TRUNCATE:cqlsh -e "SELECT table_name FROM system_schema.tables WHERE keyspace_name = 'my_keyspace' AND table_name = 'my_table';" | grep -q my_table && cqlsh -e "TRUNCATE TABLE my_keyspace.my_table;"逻辑说明:先查询
system_schema.tables获取指定keyspace下的表名,用grep -q静默检查是否存在目标表,存在则触发后续的TRUNCATE命令。在应用代码中先判断再执行
如果是在应用程序里操作,可先执行查询语句判断表是否存在:SELECT table_name FROM system_schema.tables WHERE keyspace_name = 'my_keyspace' AND table_name = 'my_table';若查询结果返回至少一行数据,再执行TRUNCATE语句:
TRUNCATE TABLE my_keyspace.my_table;
内容的提问来源于stack exchange,提问作者James Wierzba
相关产品推荐
相关产品推荐

