我需要检查Cassandra数据库中是否存在某些键空间。我需要写这样的smth:
if (keyspace KEYSPACE_NAME not exists) create keyspace KEYSPACE_NAME;
有一个命令描述密钥空间,但是我能以某种方式从cql脚本中检索它的信息吗?
答案 0 :(得分:35)
提供最新信息。从CQL3开始,在创建键空间时,您可以像这样添加if语句
CREATE KEYSPACE IF NOT EXISTS Test
WITH replication = {'class': 'SimpleStrategy',
'replication_factor' : 3}
答案 1 :(得分:10)
根据:https://issues.apache.org/jira/browse/CASSANDRA-2477,从Cassandra 1.1开始,你现在可以做到:
USE system;
SELECT * FROM schema_keyspaces;
答案 2 :(得分:9)
截至目前,cql grammar未提供create keyspace if not exists
。可能在将来,他们会添加此功能。接近这个,就是这个improvement,也许他们也会为创建键空间添加。 耸肩
你可以在python或任何Cassandra客户端中使用CQL做类似的事情。如果不存在用java编写的话,我有一个简单的创建键空间。
try
{
if (cluster.describeKeyspace("new_keyspace") == null)
{
System.out.println("create new keyspace");
KeyspaceDefinition ksdef = HFactory.createKeyspaceDefinition("new_keyspace");
cluster.addKeyspace(ksdef);
}
else
{
System.out.println("keyspace exists");
}
}
catch (HectorException e)
{
}