CQL:如何检查密钥空间是否存在?

Yur*_*yak 12 cql cassandra

我需要检查Cassandra数据库中是否存在某些键空间.我需要写这样的smth:

if (keyspace KEYSPACE_NAME not exists) create keyspace KEYSPACE_NAME;
Run Code Online (Sandbox Code Playgroud)

有一个命令描述键空间,但我能以某种方式从cql脚本中检索它的信息吗?

fga*_*akk 35

只是提供新鲜的信息.从CQL3开始创建键空间时,您可以像这样添加if语句

CREATE KEYSPACE IF NOT EXISTS Test
    WITH replication = {'class': 'SimpleStrategy',
                        'replication_factor' : 3}
Run Code Online (Sandbox Code Playgroud)


Jas*_*onw 10

截至目前,cql语法没有提供create keyspace if not exists.可能在将来,他们会添加此功能.接近这一点,就是这种改进,也许他们也会为创建键空间添加.举重若轻

您可以在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)
{   
}
Run Code Online (Sandbox Code Playgroud)


Tao*_*bow 10

根据:https://issues.apache.org/jira/browse/CASSANDRA-2477,从Cassandra 1.1开始,您现在可以:

USE system;
SELECT * FROM schema_keyspaces;
Run Code Online (Sandbox Code Playgroud)