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]]