행을 삽입하는 방법은 여러가지 일 것 같다. DBI패키지에 dbAppendTable라는 문법이 존재한다. 본 내용에서는 쿼리를 통해서 DB에 Table의 행을 삽입하는 방법을 포스팅하고자 한다. 오라클 환경 구축은 아래 포스팅을 참조하기 바란다.
Oracle xe 설치
Oracle 개요먼저 Oracle Database 11g Express Edition(Oracle XE)는 무료로 사용할 수 있는 Oracle 데이터베이스를 의미한다. 개발, 배포, 보급을 무료로 지원하고 있으며, CPU의 개수는 상관없으나 DB크기와 메모리 크기를 제한한다. Docker의 다양한 이미지 중에 21버전은 DB크기를 12GB로 제한하고, 11버전은 4GB로 제한하기 때문에 21버전을 활용하겠다. docker 환경 구축 DB가 저장될 경로를

DB 연결하기
아래 쿼리를 통해 DB와 연결을 해보자.
library(rJava)
library(RJDBC)
con <- dbConnect(JDBC(driverClass = "oracle.jdbc.OracleDriver",
classPath = "/home/ducj/설정파일/ojdbc11-full/ojdbc11.jar"),
"jdbc:oracle:thin:@ducj3.iptime.org:1521/xe",
"ducj", Sys.getenv('db_key'))
tables=RJDBC::dbListTables(con)# 테이블 목록 조회
grep('MTCARS',tables,value=T)# 테스트할 MTCARS자료가 없는지 미리 확인
예제 Table 만들기
테스트를 위해 전체 자료가 아닌 1~ 5행까지만 자료를 입력해보자.
dbWriteTable(con,'mtcars',mtcars[1:5,])
dbReadTable(con,'mtcars')
다중 Insert 수행
입력이 끝났다면 다중 Insert를 수행해보자.
sqls <- sprintf("INSERT INTO mtcars VALUES (%s)",
apply(mtcars[7,], 1, function(i) paste(i, collapse=",")))
lapply(sqls, function(s) dbSendQuery(con, s))
dbReadTable(con,'mtcars')