para - ¿Cómo recupero los nombres de las tablas en Cassandra usando Java?
java cassandra ejemplo (2)
El esquema para las tablas del sistema cambia bastante entre versiones. Lo mejor es confiar en los metadatos de los controladores que tendrán un análisis de versión específico incorporado. Desde el uso del controlador de Java
Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();
Collection<TableMetadata> tables = cluster.getMetadata()
.getKeyspace("keyspace_name")
.getTables(); // TableMetadata has name in getName(), along with lots of other info
// to convert to list of the names
List<String> tableNames = tables.stream()
.map(tm -> tm.getName())
.collect(Collectors.toList());
Si usa este código en un shell CQL, obtengo todos los nombres de tabla (s) en ese espacio de claves.
DESCRIBE TABLES;
Quiero recuperar los mismos datos usando ResulSet . A continuación está mi código en Java.
String query = "DESCRIBE TABLES;";
ResultSet rs = session.execute(query);
for(Row row : rs)
{
System.out.println(row);
}
Mientras que la sesión y el clúster se han inicializado anteriormente como:
Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();
Session session = cluster.connect("keyspace_name");
O me gusta saber el código de Java para recuperar nombres de tablas en un espacio de claves.
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());
}
El código anterior le dará los nombres de las tablas en el espacio de claves pasado independientemente de la versión de cassandra utilizada.