3주차-2
1. R 에서 DB 연결해서 사용하기
- DB 를 관리하는 DBMS 는 업체마다 다양. 예) Oracle, Postgre, MySQL, MS-SQL, SQLite, MS-ACCESS 등
- 해당 DB 를 사용하기 위해 해당 업체에서 제공하는 API 를 사용
- R 은 각 업체별 DBMS 에 접근 할수 있는 패키지 (백엔드) 제공 (예,
RMySQL
,RPostgreSQL
,RSQLite
등) - R 의
DBI
패키지를 이용하여 위의 백엔드에서 사용가능한 공통함수 사용가능
주요 DBI
함수
함수 | 설명 |
---|---|
dbConnect() | DB 연결 |
dbDisconnect() | DB 연결해제 |
dbWriteTable() | 데이터를 DB 테이블로 만들기 |
dbCreateTable() | DB 테이블 새로 만들기 |
dbListTables() | DB 내 테이블 리스트 |
dbRemoveTable() | DB 내 테이블 제거 |
dbSendQuery() | 쿼리 보내기 - 테이블 입력/수정/삭제 |
dbGetQuery() | 쿼리는 보내서 데이터 가져오기 |
dbSendQuery()
를 이용하여 쿼리를 보낸뒤dbClearResult()
를 이용하여 사용한 리소스를 정리하는 것을 권장.
위의 함수중 DB 를 연결하고 해제 하는 기능 외의 모든 함수는
SQL
쿼리를 이용하여 구현 가능
2. RSQLite
를 통해 SQLite DB 사용하기
1) DB 구축/연결/연결해제
2) 테이블 만들기
DB 필드명(변수명)에서
.
이 있는 경우 가능하면 다른 문자로 변경 권장!
- 예를 들어
iris
데이터의 변수명들에서.
을 아래와 같이 제거
a. 기존의 데이터프레임을 DB 테이블로 만들기
이미 같은 이름의 테이블에 존재하면 에러가 발생!
## [1] "iris"
b. 새로운 테이블 만들기
id
,name
,age
,dep
변수를 가진newtable
테이블을 만들어보자.- 각각의 변수가 수치형인지, 텍스트형인지 등을 지정
3) 테이블에서 데이터 가져오기
4) 테이블에 데이터 넣기
sq <- dbSendQuery(con, "INSERT INTO iris (SepalLength, SepalWidth, PetalLength, PetalWidth, Species) VALUES(4,5,6,7,'tmp')")
dbClearResult(sq)
tail(dbGetQuery(con, "SELECT * FROM iris"))
5) 테이블 데이터 수정하기
sq <- dbSendQuery(con, "UPDATE iris SET Species = 'vc' WHERE Species='versicolor'")
dbClearResult(sq)
tail(dbGetQuery(con, "SELECT * FROM iris WHERE Species='vc'"))
6) 테이블 데이터 삭제하기
sq <- dbSendQuery(con, "DELETE FROM iris WHERE Species='tmp'")
dbClearResult(sq)
tail(dbGetQuery(con, "SELECT * FROM iris"))