如何使用Java在Cassandra中检索表名?

时间:2017-02-26 13:53:24

标签: cassandra cql cql3 nosql

如果在CQL shell中使用此代码,我将获得该键空间中所有表的名称。

DESCRIBE TABLES;

我想使用 ResulSet 检索相同的数据。下面是我在Java中的代码。

String query = "DESCRIBE TABLES;";

ResultSet rs = session.execute(query);
for(Row row  : rs) {
    System.out.println(row);
}   

虽然会话和群集早先已初始化为:

Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();
Session session = cluster.connect("keyspace_name");

或者我想知道Java代码来检索密钥空间中的表名。

2 个答案:

答案 0 :(得分:6)

系统表的模式在不同版本之间发生了很大的变化。最好依赖内置版本特定解析的驱动程序元数据。从Java驱动程序使用

IDataProvider

答案 1 :(得分:4)

Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();
Metadata metadata = cluster.getMetadata();
Iterator<TableMetadata> tm = metadata.getKeyspace("Your Keyspace").getTables().iterator();

while(tm.hasNext()){
    TableMetadata t = tm.next();
    System.out.println(t.getName());
}

上面的代码将在传递的密钥空间中为您提供表名,而不管使用的cassandra版本。