Mysql을 R에서 사용하는 것은 흔한 케이스가 아니다. 하지만, Mysql에서 R을 사용하게 되면 여러가지 이점이 있다.
첫번째, 예전에 사용하는 SQL 쿼리를 사용하게 되므로써, 기존 개발 인력과 협업이 가능하다.
두번째, PowerBi Report server를 도입한 회사 하면, PowerBi 데이터 연결 및 웹 퍼블리싱이 매우 용이하다.
세번째, 가격이 무료인데, 오라클이라, 유료로 전환 된다. 하지만, MariaDB를 쓰게 되면, 기존의 Mysql에서 R과 같은 방식으로 사용할 수 있다.
Mysql 설치
Mysql 은 Iptime Nas2dual로 설정 하였다. 아래의 링크를 보면 Mysql을 설치 할 수 있다.
http://iptime.com/iptime/?page_id=67&pageid=1&mod=document&keyword=mysql&uid=20573
위의 iptime 메뉴얼 대로 설치 하고 나서, Dbeaver Community Version을 설치 한다. 이 버전은 SQL에서 아주 사용하기 편리하고 무료 버전이다.
https://dbeaver.io/download/
R 패키지 설치
이것도 앞에서 포스팅 한 페이지와 같이, MariaDB Connector를 사용해도, MySQL을 사용할 수 있다.
JDBC 연결이 좋은 이유는 별도의 ODBC 세팅을 하지 않아서 좋다.
R에서 아래와 같이 설치 한다.
install.packages("RJDBC")
만약에 설치 되어 있지 않다면, 아래와 같은 조치를 취하여 다 한다.
$ sudo apt install libmariadb-dev
그리고 다시 설치 하여야 한다.
아래와 같이 DataBase를 연결한다.
# 라이브러리 설치
library(RMariaDB)
library(DBI)
con <- dbConnect(MariaDB(), host = "유저도메인.iptime.org", dbname = "DB명",
user = "유저아이디", password = "Dgjlkdkijgoldsiohng", port = 3306)
# 라이브러리를 불러온다.
library(httr)
library(rvest)
library(lubridate)
library(stringr)
library(readr)
library(dplyr)
# 최근 3년치 데이터를 가져온다.
from = (Sys.Date() - years(3)) %>% str_remove_all('-')
to = Sys.Date() %>% str_remove_all('-')
# 종목을 선택 한다.
name ="005930"
# 아래 네이버 그래프 차트 크롤링을 해서, 데이터를 뽑아 낸다.
stock_get_fun <- function(name){
url = paste0('https://fchart.stock.naver.com/siseJson.nhn?symbol=', name,
'&requestType=1&startTime=', from, '&endTime=', to, '&timeframe=day')
data = GET(url)
data_html = data %>% read_html %>%
html_text() %>%
read_csv()
df <- data.frame(code = name,
일자 = as.character(parse_number(data_html$`[['날짜'`)),
시가 = data_html$`'시가'`,
고가 = data_html$`'고가'`,
저가 = data_html$`'저가'`,
종가 = data_html$`'종가'`,
거래량 = data_html$`'거래량'`,
외국인소진율 = parse_number(data_html$`'외국인소진율']`)
)
df <- filter(df, !is.na(일자))
df <- arrange(df, desc(일자))
return(df)
}
stock <- stock_get_fun(name)
위와 같이 크롤링이 되었으면, 데이터 베이스 인서트 시킨다.
dbWriteTable(con, "stock", stock , append = TRUE)
위와 같은 크롤링은 그래프로 하는 것으로 속도가 매우 빨라서 좋다.
아래의 링크를 참고 해서 작성 하였으니, 관심이 있으면 아래의 내용을 보면 된다.
https://hyunyulhenry.github.io/quant_cookbook/%EA%B8%88%EC%9C%B5-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%88%98%EC%A7%91%ED%95%98%EA%B8%B0-%EC%8B%AC%ED%99%94.html#%EC%88%98%EC%A0%95%EC%A3%BC%EA%B0%80-%ED%81%AC%EB%A1%A4%EB%A7%81
Happy New Year! 늦었지만 새해 복 많이 받으세요! 감사합니다.
답글삭제새해 복 많이 받으십시오.
답글삭제