12

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

if (keyspace KEYSPACE_NAME not exists) create keyspace KEYSPACE_NAME;

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

4

3 回答 3

37

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

CREATE KEYSPACE IF NOT EXISTS Test
    WITH replication = {'class': 'SimpleStrategy',
                        'replication_factor' : 3}
于 2013-10-06T21:14:15.427 回答
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)
{   
}
于 2012-03-12T04:37:38.060 回答
10

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

USE system;
SELECT * FROM schema_keyspaces;
于 2012-08-06T17:25:57.697 回答