R语言读取CSV,批量写入MYSQL数据库

#前言

    折腾了一个星期的R语言。基本把语法看懂了..里面的数学算法..哎,一股心酸泪。今天将数据从csv读取然后计算后写入数据库。为什么要读csv文件,而不是直接写入数据库呢?原因中数据太多了..上亿的数据丢到mysql,估计它都崩溃了。所以还是采用前人大佬的办法,写入csv,然后再读取csv文件了。


#上码

library(highfrequency)
library(xts)
library(rugarch)

setwd("D:\\git_data\\RDemo")

source("utils/Contents.R")
source("utils/DbUtils.R")
#setwd("/Users/hubs/Desktop")


####### Pre Settings #######
tic = Sys.time()

filelist  <- list.files("D:/data/rv_800/")
filesize  <- length(filelist);

conn      <- initDb()
assets    <- getTableDatas(conn,TABLE_ASSET)

#取所有的行数
for(index in 1:filesize)
{
  
  ####### 000001.SH.csv #######
  stockname  <- as.character(filelist[index])
  #code
  code       <- substring(stockname,1,9);
  ifexist    <- 0
  dir        <- paste("D:/data/rv_800/",stockname,sep="")
  if(file.exists(dir))
  {
    #[,-1] 意思是删除第一列
    data1           <- read.csv(dir,header=T)
    colnames(data1) <- c("Time", "Open","High","Low","Close","Volume")
    ifexist = ifexist+1
  }
  
  if(ifexist > 0){

    .....省略N多算法,因为是大佬们写的代码,没有数学基础表示看不懂,所以还是删去了。免得看着有压力
    

    index(rrv) <- as.Date(index(rrv))
    index(rv) <- as.Date(index(rv))
    index(Overnight) <- as.Date(index(Overnight))
    results <- cbind(Overnight,rv,rrv)
    
    #取指定的列
    results <- results[,c(1:5,16:18)]

   #之前是写csv文件的,我只是改成直接写入数据库
   # dir5 <- paste("rv_results/",stockname,"_RV_results.csv",sep="")
   #  write.csv(results, file = dir5, row.names = index(results))
   
     sLen       = length(results$Open)

     records    = data_c = asset_id_c = rv_c = rrv_c = unique_field_c =  NULL;
     for(sIndex in 1:sLen)
     {
       sItem    = results[sIndex,]
       date_tmp = paste(index(sItem),sep="")
       
       assetId  = findIdForCodeFromDatas(assets,code)
       
       unique_field_str<-paste(date_tmp,'_',assetId,sep="")

       data_c       <- c(data_c,date_tmp)
      
       asset_id_c   <- c(asset_id_c,assetId)
       rv_c         <- c(rv_c,sItem$RV)
       rrv_c        <- c(rrv_c,sItem$RRV)
       unique_field_c <- c(unique_field_c,unique_field_str)
     }
     
     #http://blog.sina.com.cn/s/blog_403aa80a0101hqhf.html
     #批量写入
     records    <- data.frame(date=data_c,asset_id=asset_id_c,rv=rv_c,rrv=rrv_c,unique_field=unique_field_c)
    #print(records)
   # break;
     #records <- data.frame(id=c(3, 4), temperature=c(20, 25))
     updateOrInsert(conn,TABLE_DAILY_VOLATILITY_TEST,records,c('unique_field'))

  }
  #break;

}
toc = Sys.time()
toc - tic