'R DB Connection'에 해당하는 글 1건

R DB Connection

R 2014.01.28 11:02

R에서 일반적인 분석 방법은 아래와 같다.

1. DB에서 분석할 데이터를 가져와 csv, txt와 같은 파일 형태로 생성한다.

2. R에서는 각종 read 함수를 이용하여 생성한 파일을 메모리에 올려 분석 작업을 진행한다.


이 방법의 단점은 R에서 분석하기 위해서는 DB에서 데이터를 가공해서 파일로 전달할때 까지 기다려야 한다는 것이다.

분석가와 DBA간의 커뮤니케이션에 문제가 있을 경우 위 1,2번의 작업을 몇 차례나 더 해야 할 수도 있다.


그래서 이번에는 R에서 직접 RDBMS를 Conncetion하는 방법을 알아보고자 한다.

이 방법의 장점은 SQL을 조금만 알면 분석가는 DBA에게 데이터를 요청할 필요도 없으며 SQL로 쉽게 데이터를 선 정제 후 R에서 분석가능하다.


여기서 부터 아래 작업은 Ubuntu 64bit 기준으로 작성되었으며 R이 이미 설치되어 있다고 가정한다.

R Version은 >= 2.15 이상이어야 한다.


RJDBC 패키지를 사용하기 위해서는 우선 java를 설치해야 한다.

 $ sudo apt-get install openjdk-7-jdk


그리고 아래와 같이 실행하기 바란다.(Root 계정으로 실행)

 $ R CMD javareconf


이제 R에서 DB Connection하기 위한 Package를 설치해야 한다.

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

환경변수 세팅

 LD_LIBRARY_PATH=/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/amd64/server/:/home/user/R/x86_64-pc-linux-gnu-library/3.0/rJava/jri:$LD_LIBRARY_PATH


설치 후 해당 Package가 제대로 load되는지 확인이 필요하다.

library(DBI)
library(rJava)
library(RJDBC)

RJDBC는 rJava에 의존적으로 rJava를 먼저 load 후 loading해야 한다.

혹 rJava load 시 아래와 같은 에러가 발생할 경우 이 링크를 참조하기 바란다.

(만약 이도저도 다 해봤는데 안되면 재부팅 해보길 바란다... ^^;)

 Error in dyn.load(x, as.logical(local), as.logical(now)) : 
      unable to load shared library '/usr/local/lib/R/site-library/rJava/libs/rJava.so':
  libjvm.so: cannot open shared object file: No such file or directory

여기서는 mysql를 접속하기 위해서 mysql connector를 설치해야 한다.(oracle이라면 이글 참고)

 $ sudo apt-get install libmysql-java

설치를 하게 되면 /usr/share/java/ 폴더에 jar파일이 있을 것이다.


이제 다 끝났다. 이제 직접 R에서 DB Connection을 해보자.

library(DBI)
library(rJava)
library(RJDBC)
drv <- JDBC("com.mysql.jdbc.Driver", "/usr/share/java/mysql-connector-java.jar", identifier.quote="`")
conn <- dbConnect(drv, "jdbc:mysql://<db_ip>:<db_port>/<dbname>", "<id>", "<passwd>")
df.table <- dbGetQuery(conn, "select * from DBTABLE")
class(df.table)

실제 소스 실행화면


위 실행화면을 보면 dbGetQuery로 SQL문을 작성하여 해당 테이블을 가져와 df.table R 객체에 할당하였고 테이블 데이터를 확인할 수 있다. 또한 class 함수로 df.table형을 확인해보면 data.frame을 알 수 있다. ^^

저작자 표시
신고

'R' 카테고리의 다른 글

R 상위버전 설치  (0) 2014.01.28
R DB Connection  (0) 2014.01.28
R 상관분석(Correlation) 시각화  (2) 2014.01.24
R 데이터프레임(DF) grep & gsub  (0) 2014.01.17

WRITTEN BY
빵군
Web Programmer HOONS닷넷(http://www.hoons.kr) 2011 ASP.NET 시삽 http://about.me/y2kpooh

받은 트랙백이 없고 , 댓글이 없습니다.
secret