[R] R에서 MDB 파일을 로드하여 CSV 파일로 저장하기 (feat. MS-Access)

본문에서는 R을 이용하여 .mdb 파일을 불러온 뒤, 테이블별로 .csv 파일 생성 방법을 소개합니다.
참고로, MDB 파일은 Microsoft Access에서 생성된 데이터베이스 파일입니다.

1. 데이터 확인

파일에는 총 6개의 테이블이 들어있으며, 암호가 설정되어 있습니다.

R에서 MDB 파일 불러오기
▲ Microsoft Access MDB 파일 불러오기

2. 데이터 로드

R에서 .mdb파일을 처리하는 데에는 주로 ODBC 패키지를 사용하며, 기본적으로 Driver, DBQ의 정보가 필요합니다.

만약 파일에 암호가 설정되어 있다면 PWD옵션도 설정해 주어야 합니다.

패키지 로드 및 설정값 세팅

library(RODBC)

p_driver <- "{Microsoft Access Driver (*.mdb, *.accdb)};" # 드라이버
p_dbq <- "d:/Analysis/test_mdb/test.mdb;" # 파일 경로
p_pwd <- "******;" # 패스워드

# for 64 bit windows
odbc_conn <- odbcDriverConnect(paste0("Driver=",p_driver,"DBQ=",p_dbq,"pwd=",p_pwd))
odbc_conn

R에서 RODBC로 DB연결
▲ R에서 RODBC로 DB연결

전체 테이블 정보 가져오기

mdb_info <- sqlTables(odbc_conn)
mdb_info

R에서 sqlTable 출력결과
▲ R에서 sqlTable() 출력결과

테이블명 추출

library(dplyr)

tableList <- mdb_info %>% filter(TABLE_TYPE == "TABLE") %>% select("TABLE_NAME")
tableList <- tableList[,1]
tableList

R에서 MDB파일 테이블명 추출
▲ R에서 MDB파일 테이블명 추출

3. 테이블별 csv 파일 생성

for문을 이용한 반복 처리

library(xlsx)

target_dir <- "./output/"

for(i in 1:length(tableList)){

  fname <- paste0(tableList[i],".csv") # 테이블명과 동일한 파일명 생성
  tmp <- sqlFetch(odbc_conn, tableList[i]) # 테이블내 데이터 가져오기
  write.csv(tmp, file = paste0(target_dir,fname), row.names = FALSE) # csv 파일로 저장 

  print(paste0(target_dir,fname)) # 결과물 출력
}

R에서 MDB파일 테이블별 csv파일 생성
▲ 테이블별 csv파일 생성


4. 관련 링크

[1] Access 파일 형식 - Access - Microsoft Support

5. System Info.

OS : Windows 10
JRE : 11.0.2+159 amd64
JVM : OpenJDK 64-Bit Server VM by JetBrains s.r.o
R : 3.6.2 (2019-12-12)
RStudio : 1.2.5033
Python : 3.6.6
PyCharm Community 2020.02


▶ 전체 코드 확인 : Github 링크


banner-request-analysis