RmariaDB 다량의 데이터 업로드 메모

아래는  네이버 차트에서 크롤링 한 다음에, RMariaDB에 Insert 하는 장면이다.  이것은 ERP시스템에 있는 데이터를 R로 정기적으로 업데이트 해주는 역할을 한다.   


사용할 일이 있어서 아래와 같이 메모 한다.   


# 라이브러리를 불러온다. 
  library(httr)
  library(rvest)
  library(lubridate)
## 
## 다음의 패키지를 부착합니다: 'lubridate'
## The following objects are masked from 'package:base':
## 
##     date, intersect, setdiff, union
  library(stringr)
  library(readr)
## 
## 다음의 패키지를 부착합니다: 'readr'
## The following object is masked from 'package:rvest':
## 
##     guess_encoding
  library(dplyr)
## 
## 다음의 패키지를 부착합니다: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
# Mongo DB 연결
  source("~/Dropbox/01.R분석/08.stockR/01.DBConnection/Mongocon.R")  
  
# Mysql DB 연결 
  source("~/Dropbox/01.R분석/08.stockR/01.DBConnection/Mysqlcon.R")  
  
# 최근 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)  
  }


insert_fun <- function(name){
  
  stock <-  stock_get_fun(name)

  query <- paste0("DELETE FROM stock WHERE code = '",name,"'")
  res <- dbSendQuery(con, query)
  dbClearResult(res)

  dbWriteTable(con, "stock", stock , append = TRUE)
  
}   
 
stock_master <-  mongo_all_fun("master", "yongas")
## 
 Found 358 records...
 Imported 358 records. Simplifying into dataframe...
system.time(
for(i in 1:nrow(stock_master)) {  

  stock_code <- stock_master$단축코드[i]
  try(insert_fun(stock_code), silent = TRUE)
   
}    
)

댓글 없음:

댓글 쓰기

css cheat sheet 클래스 선택자, margin(마진), display , center 조정 간단한 구성 요소

 앞에서는 html의 간단한 sheet를 소개 하였습니다.   html은  주로 골격을 나타나는 것이라, 디자인을 하는데는 css로 하여야 합니다.  아래 코드와 같이 css 관련 하여 매우 간단하게 코딩 하겠습니다.  body 부분의 css 코딩  ...