如果在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代码来检索密钥空间中的表名。
答案 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版本。