Cassandra - Leer datos

Leer datos usando la cláusula de selección

La cláusula SELECT se usa para leer datos de una tabla en Cassandra. Con esta cláusula, puede leer una tabla completa, una sola columna o una celda en particular. A continuación se muestra la sintaxis de la cláusula SELECT.

SELECT FROM <tablename>

Ejemplo

Suponga que hay una tabla en el espacio de teclas llamado emp con los siguientes detalles -

emp_id emp_name emp_city emp_phone emp_sal
1 RAM Hyderabad 9848022338 50000
2 Robin nulo 9848022339 50000
3 Rahman Chennai 9848022330 50000
4 rajeev Pune 9848022331 30000

El siguiente ejemplo muestra cómo leer una tabla completa usando la cláusula SELECT. Aquí estamos leyendo una tabla llamadaemp.

cqlsh:tutorialspoint> select * from emp;

 emp_id |  emp_city | emp_name |  emp_phone | emp_sal
--------+-----------+----------+------------+---------
      1 | Hyderabad |   ram    | 9848022338 | 50000
      2 | null      |   robin  | 9848022339 | 50000
      3 | Chennai   |   rahman | 9848022330 | 50000
      4 | Pune      |   rajeev | 9848022331 | 30000
		
(4 rows)

Lectura de columnas obligatorias

El siguiente ejemplo muestra cómo leer una columna en particular en una tabla.

cqlsh:tutorialspoint> SELECT emp_name, emp_sal from emp;

 emp_name | emp_sal
----------+---------
      ram | 50000
    robin | 50000
   rajeev | 30000
   rahman | 50000 
	
(4 rows)

Dónde cláusula

Usando la cláusula WHERE, puede poner una restricción en las columnas requeridas. Su sintaxis es la siguiente:

SELECT FROM <table name> WHERE <condition>;

Note - Una cláusula WHERE se puede utilizar solo en las columnas que forman parte de la clave principal o que tienen un índice secundario.

En el siguiente ejemplo, estamos leyendo los detalles de un empleado cuyo salario es 50000. En primer lugar, establezca el índice secundario en la columna emp_sal.

cqlsh:tutorialspoint> CREATE INDEX ON emp(emp_sal);
cqlsh:tutorialspoint> SELECT * FROM emp WHERE emp_sal=50000;

 emp_id |  emp_city | emp_name |  emp_phone | emp_sal
--------+-----------+----------+------------+---------
      1 | Hyderabad |      ram | 9848022338 | 50000
      2 |      null |    robin | 9848022339 | 50000
      3 |   Chennai |   rahman | 9848022330 | 50000

Leer datos usando la API de Java

Puede leer datos de una tabla usando el método execute () de la clase Session. Siga los pasos que se indican a continuación para ejecutar varias declaraciones utilizando la declaración por lotes con la ayuda de la API de Java.

Paso 1: crear un objeto de clúster

Crea una instancia de Cluster.builder clase de com.datastax.driver.core paquete como se muestra a continuación.

//Creating Cluster.Builder object
Cluster.Builder builder1 = Cluster.builder();

Agregue un punto de contacto (dirección IP del nodo) usando el addContactPoint() método de Cluster.Builderobjeto. Este método devuelveCluster.Builder.

//Adding contact point to the Cluster.Builder object
Cluster.Builder builder2 = build.addContactPoint( "127.0.0.1" );

Con el nuevo objeto constructor, cree un objeto de clúster. Para hacerlo, tienes un método llamadobuild() en el Cluster.Builderclase. Utilice el siguiente código para crear el objeto de clúster.

//Building a cluster
Cluster cluster = builder.build();

Puede crear el objeto de clúster con una sola línea de código como se muestra a continuación.

Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();

Paso 2: crear un objeto de sesión

Cree una instancia del objeto Session utilizando el método connect () de la clase Cluster como se muestra a continuación.

Session session = cluster.connect( );

Este método crea una nueva sesión y la inicializa. Si ya tiene un espacio de claves, puede establecerlo en el existente pasando el nombre del espacio de claves en formato de cadena a este método como se muestra a continuación.

Session session = cluster.connect(“Your keyspace name”);

Aquí estamos usando el KeySpace llamado tp. Por lo tanto, cree el objeto de sesión como se muestra a continuación.

Session session = cluster.connect(“tp”);

Paso 3: ejecutar la consulta

Puede ejecutar consultas CQL utilizando el método execute () de la clase Session. Pase la consulta en formato de cadena o como un objeto de clase Statement al método execute (). Todo lo que pase a este método en formato de cadena se ejecutará en elcqlsh.

En este ejemplo, estamos recuperando los datos de empmesa. Almacene la consulta en una cadena y páselo al método execute () de la clase de sesión como se muestra a continuación.

String query = ”SELECT 8 FROM emp”;
session.execute(query);

Ejecute la consulta usando el método execute () de la clase Session.

Paso 4: Obtenga el objeto ResultSet

Las consultas seleccionadas devolverán el resultado en forma de ResultSet objeto, por lo tanto, almacene el resultado en el objeto de RESULTSET clase como se muestra a continuación.

ResultSet result = session.execute( );

A continuación se muestra el programa completo para leer datos de una tabla.

import com.datastax.driver.core.Cluster;
import com.datastax.driver.core.ResultSet;
import com.datastax.driver.core.Session;

public class Read_Data {

   public static void main(String args[])throws Exception{
    
      //queries
      String query = "SELECT * FROM emp";

      //Creating Cluster object
      Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();
    
      //Creating Session object
      Session session = cluster.connect("tutorialspoint");
    
      //Getting the ResultSet
      ResultSet result = session.execute(query);
    
      System.out.println(result.all());
   }
}

Guarde el programa anterior con el nombre de la clase seguido de .java, busque la ubicación donde está guardado. Compile y ejecute el programa como se muestra a continuación.

$javac Read_Data.java
$java Read_Data

En condiciones normales, debería producir la siguiente salida:

[Row[1, Hyderabad, ram, 9848022338, 50000], Row[2, Delhi, robin,
9848022339, 50000], Row[4, Pune, rajeev, 9848022331, 30000], Row[3,
Chennai, rahman, 9848022330, 50000]]