SQL

[MSSQL] RODBC로 R - MSSQL 연결하는 방법

슈퍼짱짱 2020. 3. 4. 19:00
반응형

R에서 MSSQL 연결하는 방법


R과 MSSQL이 설치되었다는 가정 하에 진행한다.


R에서 SQL 서버를 연결하기 위해 RODBC 라이브러리를 사용한다. 이에 앞서, 컴퓨터에 미리 세팅을 해주어야 한다.

 


시작버튼을 눌러 ODBC를 검색한 후, 우클릭으로 관리자 권한으로 실행한다.

 



시스템 DSN으로 들어가 추가 클릭!

 



SQL Server 로 설정




이름과 설명은 원하는데로, 서버는 SQL server와 같게 설정.

여기서 설정한 이름은 후에 R에서 연결할 때 dsn parameter에 들어가니 꼭 기억하기!






기본 데이터베이스를 다음으로 변경 클릭 후 원하는 데이터베이스와 연결. 서버 자체와 연결을 원한다면 이 과정은 생략!







이렇게 세팅을 마치고 나면, R에서 RODBC 라이브러리를 통해 연결 할 수 있다.


1
2
library(RODBC)
msconn <- odbcConnect("TEST") # db 연결
cs

 

* odbcConnect(dsn, uid = "", pwd = "", ...)


dsn : 위에서 연결한 server 이름

uid : id/password 설정시 id

pwd : id/password 설정시 password 



이제 연결이 되었다.


SQL 서버에 미리 TEST_TABLE을 만들어 놓았다.


1
2
3
4
CREATE TABLE TEST_TABLE(
VARCHAR(20NOT NULL PRIMARY KEY,
VARCHAR(30NOT NULL
)
cs


이를 R에서 불러보면 다음과 같다.

query는 SQL server에서 사용하는 query와 똑같이 써주면 된다.


1
2
query <- "SELECT * FROM [TEST].[dbo].[TEST_TABLE]"
sqlQuery(msconn, query)
cs


[1] A B

<0 행> <또는 row.names의 길이가 0입니다>


R에서 INSERT문으로 TEST_TABLE에 데이터를 넣어보겠다.


1
2
query <- "INSERT INTO [TEST].[dbo].[TEST_TABLE](A, B) VALUES('MSSQL','TEST')"
sqlQuery(msconn, query)
cs


SQL server에서 확인해 보면 데이터가 잘 들어간 것을 확인할 수 있다.



이를 R에서도 확인할 수 있다.


1
2
query <- "SELECT * FROM [TEST].[dbo].[TEST_TABLE]"
data <- sqlQuery(msconn, query)
cs


> data

      A    B

1 MSSQL TEST


SQL server와 똑같은 query를 날려주면 된다.


> str(data)

'data.frame': 1 obs. of  2 variables:

 $ A: Factor w/ 1 level "MSSQL": 1

 $ B: Factor w/ 1 level "TEST": 1


외에도 delete, drop 등 기존 SQL server에서 하던 쿼리 그대로 R에서도 활용할 수 있다.


* Data Type


R에서 데이터를 불러오면 

숫자형은 integer type, 

datetime은 POSIXct type, 

varchar 형은 Factor type으로 변환되어 들어온다.


반응형