일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- pytorch
- 백준
- uncertainty
- Graph
- 논문리뷰
- pandas
- 코딩테스트
- YarinGal
- Crawling
- 빅데이터
- selenium
- DATA
- 파이썬
- 알고리즘
- R
- AI
- 베이지안
- 데이터분석
- bayesian
- 불확실성
- VAE
- 텍스트분석
- 강화학습
- dropout
- GNN
- PYTHON
- 리눅스
- 우분투
- 텍스트마이닝
- 크롤링
- Today
- Total
끄적거림
[R쓸신잡]DB연결 in R with RJDBC package 본문
실무에서 데이터분석을 하다보면 필요한 데이터를 DB에서 수시로 내려받아야할 순간이 온다.
하지만 언제까지 DB 툴에서 Excel로 내려 받을 수는 없으니 DB와 직접 연결하여 R 자체에서 데이터를 불러와보자.
본 코드와 내용은 Oracle 기준이고 Oracle DB와 연동할 수 있는 방법은 총 3가지(패키지)가 있다.
1) RJDBC
2) RODBC
3) ROracle
1. install and download java
가장 먼저 해야할 일은 Java를 설치하는 것이다. 아마 대부분 설치가 되어있겠지만, 자바를 잘 설치하고 환경변수에 자바의 위치를 잘 설정해야지 DB와의 연동이 가능하다.
2. Set Environment variable
위에서 말했던 것처럼 환경변수를 세팅해줘야하는데 이때는 R에서 직접할 수도 있고 수동으로 환경변수에 접속하여 설정할 수도 있다.
3. DB Connection
위의 두 단계를 제대로 진행했다면 아래의 코드를 보면서 DB와 연동해보자
먼저, RJDBC 패키지를 설치하고 로딩한다.
JDBC는 DB에서 필수적인 개념으로 본 패키지에서도 JDBC를 이용하여 가져오는 방식을 사용한다.
install.packages("RJDBC")
library(RJDBC)
다음으로, 드라이브를 만드는 작업이다. JDBC( )함수를 이용하여 드라이버 객체를 만든다.
여기서 driverClass 인자는 Oracle을 사용하는 사람이라면 "oracle.jdbc.OracleDriver" 그대로 사용해야 한다.
또한 classPath는 Oracle 버전마다 해당 파일의 이름이 다를 경우가 있지만, 보통 ojdbc6.jar 혹은 ojdbc14.jar 이라는 이름으로 되어있다. 해당 파일이 위치한 경로를 넣어주면된다.
마지막 인자 값은 저렇게 공백으로 넣어준다.
driv <- JDBC(driverClass = "oracle.jdbc.OracleDriver"
, classPath="[ojdbc6.jar]파일이 설치되어 있는 경로", " ")
DB 연동을 위한 마지막 단계다. DB connector를 만드는 작업이다.
내가 접속하고 싶은 DB에 대한 정보를 적어주어야 한다.
해당 정보는 Oracle의 Table 정보를 갖고 있는 메타정보 file에 존재한다.
**보안** 이라고 적힌 글자는 해당 DB에 필요한 필수 정보이므로 유출되어선 안되니 주의하자.
그렇게 모든 DB에 대한 정보와 ID, PWD를 적어주면 DB Connector를 생성할 수 있다.
connect <- paste(
"jdbc:oracle:thin:@(DESCRIPTION=",
"(ADDRESS=(PROTOCOL = TCP)(HOST = **보안**)(PORT = **보안**))",
"(CONNECT_DATA=(SERVICE_NAME = **보안**)))", sep = "")
DB <- dbConnect(driv, connect, "**ID**", "**PWD**")
마지막으로, 내가 원하는 데이터를 뽑을 쿼리문을 작성하고 dbGetQuery( ) 함수와 커넥터를 이용하여 데이터를 받아온다. 주의할 점은 Query문에 특수문자가 들어가지 않게 조심하는 것이다. 가령, \n, \t와 같은 탈출문자도 에러를 반환할 수 있으니 paste함수로 깔끔한 sql 정리가 필요하다.
query <- "SQL query 입력"
data <- dbGetQuery(DB, query) %>% setDT()
데이터를 받아올 때만 dbGetQuery( )함수를 사용하고, DB안에 있는 데이터를 수정/삭제/추가 하는 경우는 다른 함수를 사용해야한다.
'R쓸신잡' 카테고리의 다른 글
[R쓸신잡] multi package install, import(library), update in R (0) | 2020.06.19 |
---|---|
[R쓸신잡]DB연결 in R 패키지(RJDBC, RODBC, ROracle) benchmark (0) | 2020.06.18 |
[R쓸신잡]DB연결 in R with ROracle package (0) | 2020.06.17 |
[R쓸신잡]DB연결 in R with RODBC package (0) | 2020.06.16 |
data.table 패키지 유용하게 사용하기 1편 (0) | 2020.02.06 |