Учебники

Кассандра — Читать данные

Предложение SELECT используется для чтения данных из таблицы в Cassandra. Используя это предложение, вы можете прочитать всю таблицу, один столбец или конкретную ячейку. Ниже приведен синтаксис предложения SELECT.

SELECT FROM <tablename>

пример

Предположим, что в пространстве ключей есть таблица с именем emp со следующими деталями:

emp_id emp_name emp_city emp_phone emp_sal
1 баран Хайдарабад 9848022338 50000
2 Робин ноль 9848022339 50000
3 рахман Chennai 9848022330 50000
4 Раджив Пуна 9848022331 30000

В следующем примере показано, как прочитать всю таблицу с помощью предложения SELECT. Здесь мы читаем таблицу с именем emp .

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)

Чтение обязательных столбцов

В следующем примере показано, как прочитать определенный столбец в таблице.

cqlsh:tutorialspoint> SELECT emp_name, emp_sal from emp;

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

Где пункт

Используя предложение WHERE, вы можете наложить ограничение на необходимые столбцы. Его синтаксис выглядит следующим образом —

SELECT FROM <table name> WHERE <condition>;

Примечание. Предложение WHERE может использоваться только для столбцов, которые являются частью первичного ключа или имеют вторичный индекс.

В следующем примере мы читаем сведения о сотруднике, чья зарплата составляет 50000. Прежде всего, установите вторичный индекс в столбце 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

Чтение данных с использованием Java API

Вы можете прочитать данные из таблицы, используя метод execute () класса Session. Выполните шаги, приведенные ниже, чтобы выполнить несколько операторов, используя пакетный оператор с помощью Java API.

Шаг 1: Создайте объект кластера

Создайте экземпляр класса Cluster.builder пакета com.datastax.driver.core , как показано ниже.

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

Добавьте контактную точку (IP-адрес узла), используя метод addContactPoint () объекта Cluster.Builder . Этот метод возвращает Cluster.Builder .

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

Используя новый объект компоновщика, создайте объект кластера. Для этого у вас есть метод build () в классе Cluster.Builder . Используйте следующий код для создания объекта кластера.

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

Вы можете построить кластерный объект, используя одну строку кода, как показано ниже.

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

Шаг 2. Создание объекта сеанса

Создайте экземпляр объекта Session, используя метод connect () класса Cluster, как показано ниже.

Session session = cluster.connect( );

Этот метод создает новый сеанс и инициализирует его. Если у вас уже есть пространство ключей, то вы можете установить его на существующее, передав этому методу имя KeySpace в строковом формате, как показано ниже.

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

Здесь мы используем KeySpace под названием tp . Поэтому создайте объект сеанса, как показано ниже.

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

Шаг 3: Выполнить запрос

Вы можете выполнять CQL-запросы, используя метод execute () класса Session. Передайте запрос либо в строковом формате, либо в виде объекта класса Statement в метод execute (). Все, что вы передадите этому методу в строковом формате, будет выполнено в cqlsh .

В этом примере мы получаем данные из таблицы emp . Сохраните запрос в строке и передайте его методу execute () класса сеанса, как показано ниже.

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

Выполните запрос, используя метод execute () класса Session.

Шаг 4: Получить объект ResultSet

Запросы select вернут результат в виде объекта ResultSet , поэтому сохраните результат в объекте класса RESULTSET, как показано ниже.

ResultSet result = session.execute( );

Ниже приведена полная программа для чтения данных из таблицы.

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());
   }
}

Сохраните вышеупомянутую программу с именем класса, за которым следует .java, перейдите к месту, где она была сохранена. Скомпилируйте и выполните программу, как показано ниже.

$javac Read_Data.java
$java Read_Data

В нормальных условиях он должен выдавать следующий результат: