Cassandra-데이터 읽기
Select 절을 사용하여 데이터 읽기
SELECT 절은 Cassandra의 테이블에서 데이터를 읽는 데 사용됩니다. 이 절을 사용하면 전체 테이블, 단일 열 또는 특정 셀을 읽을 수 있습니다. 다음은 SELECT 절의 구문입니다.
SELECT FROM <tablename>
예
이름이 지정된 키 스페이스에 테이블이 있다고 가정합니다. emp 다음 세부 사항과 함께-
emp_id | emp_name | emp_city | emp_phone | emp_sal |
---|---|---|---|---|
1 | 램 | 하이데라바드 | 9848022338 | 50000 |
2 | 남자 이름 | 없는 | 9848022339 | 50000 |
삼 | 라만 | 첸나이 | 9848022330 | 50000 |
4 | Rajeev | 푸네 | 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 절
WHERE 절을 사용하면 필요한 열에 제약 조건을 적용 할 수 있습니다. 구문은 다음과 같습니다.
SELECT FROM <table name> WHERE <condition>;
Note − WHERE 절은 기본 키의 일부이거나 보조 인덱스가있는 열에서만 사용할 수 있습니다.
다음 예에서는 급여가 50000 인 직원의 세부 정보를 읽고 있습니다. 먼저 secondary index를 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를 사용하여 데이터 읽기
Session 클래스의 execute () 메서드를 사용하여 테이블에서 데이터를 읽을 수 있습니다. 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 단계 : 세션 개체 생성
아래와 같이 Cluster 클래스의 connect () 메서드를 사용하여 Session 객체의 인스턴스를 생성합니다.
Session session = cluster.connect( );
이 메서드는 새 세션을 만들고 초기화합니다. 이미 키 스페이스가있는 경우 아래와 같이 문자열 형식의 키 스페이스 이름을이 메서드에 전달하여 기존 키 스페이스로 설정할 수 있습니다.
Session session = cluster.connect(“Your keyspace name”);
여기서 우리는 tp. 따라서 아래와 같이 세션 개체를 생성합니다.
Session session = cluster.connect(“tp”);
3 단계 : 쿼리 실행
Session 클래스의 execute () 메서드를 사용하여 CQL 쿼리를 실행할 수 있습니다. 쿼리를 문자열 형식으로 또는 Statement 클래스 객체로 execute () 메서드에 전달합니다. 이 메서드에 문자열 형식으로 전달하는 것은 무엇이든cqlsh.
이 예에서는 다음에서 데이터를 검색합니다. emp표. 쿼리를 문자열에 저장하고 아래와 같이 세션 클래스의 execute () 메서드에 전달합니다.
String query = ”SELECT 8 FROM emp”;
session.execute(query);
Session 클래스의 execute () 메서드를 사용하여 쿼리를 실행합니다.
4 단계 : ResultSet 개체 가져 오기
선택 쿼리는 결과를 다음 형식으로 반환합니다. 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
정상적인 조건에서 다음과 같은 출력을 생성해야합니다.
[Row[1, Hyderabad, ram, 9848022338, 50000], Row[2, Delhi, robin,
9848022339, 50000], Row[4, Pune, rajeev, 9848022331, 30000], Row[3,
Chennai, rahman, 9848022330, 50000]]