Practice makes perfect

[R] 정형 데이터 처리(DB 연결) 본문

빅데이터/R

[R] 정형 데이터 처리(DB 연결)

kerpect 2020. 7. 8. 18:21

1) Oracle 정형 데이터 처리 

 

단계1 : 사용자 로그인과 테이블 생성
- sqlplus 명령문으로 접속 후 다음의 데이터 생성 

 

단계2 : 레코드 추가와 조회하기 

 

단계3 : transaction 처리 - commit; 

 

● Oracle 연동을 위한 R 패키지 설치

 

① 패키지 설치

install.packages("rJava")
install.packages("DBI")
install.packages("RJDBC")

- RJDBC 패키지 사용하기 위해서는 java를 설치해야 합니다(내부가 java로 되어 있음)

 

 

② 패키지 로딩

Sys.setenv(JAVA_HOME='C:/Program Files/Java/jre1.8.0_221') # java 위치 명시 
library(DBI)
library(rJava) 
library(RJDBC) # rJava에 의존적이다(rJava 먼저 로딩)

 

 

③ Oracle 연동 (주의 : 버전에 따라 다름)

 

- Oracle 11g Ex.  - driver

drv <- JDBC("oracle.jdbc.driver.OracleDriver",
            "C:/oraclexe/app/oracle/product/11.2.0/server/jdbc/lib/ojdbc6.jar")

oracle 사이트 또는 구글링을 통해서 찾으면 됩니다. 

 

 

- db 연동 (driver, url, id, pwd)

conn <- dbConnect(drv, "jdbc:oracle:thin:@//localhost:1521/xe", "scott", "tiger")

 

④ 모든 레코드 검색

query <- "select * from test_table"
dbGetQuery(conn, query)

 

 

⑤ 조건 검생 - 나이가 30살 이상인 레코드 조회

query <- "select * from test_table where age >= 30"
result <- dbGetQuery(conn, query)
result 

 

 

⑥ 정렬 조회 - 나이 컬럼을 기준으로 내림차순 정렬

query <- "select * from test_table order by age desc"
dbGetQuery(conn, query)

 

 

⑦ 레코드 삽입

query <- "insert into test_table values('kang', '123', '강감찬', 35)"
dbSendUpdate(conn,query)

query <- "select * from test_table"
dbGetQuery(conn, query)

 

 

레코드 수정 : 데이터 '강감찬'의 나이를 35 -> 40 으로 수정 

query <- "update test_table set age=40 where name='강감찬'"
dbSendUpdate(conn,query) # RJDBC


query <- "select * from test_table"
dbGetQuery(conn, query) # DBI 

'강감찬' - 문자열 안에 있기 때문에 작은 따옴표로 감싸야 합니다.

 

 

레코드 삭제 - 데이터 '홍길동' 레코드 삭제 

query <- "delete from test_table where name = '홍길동'"
dbSendUpdate(conn,query)

query <- "select * from test_table"
dbGetQuery(conn, query)

 

 

db 연결 종료 

dbDisconnect(conn) # DBI