R数据导入数据库-充电记录

rm(list=ls())
workDir="E:/ddqc/ddqc";
sourceDir=paste(workDir,"/source",sep="");
setwd(workDir)  
options(scipen=50)
library(rJava)
library(xlsxjars)
library(xlsx)
library(DBI)
library(RJDBC)
f_InsertValues<-function(total,conn){
  total$订单创建时间=substr(total$订单创建时间,1,19)
  total$开始时间=substr(total$开始时间,1,19)
  total$结束时间=substr(total$结束时间,1,19)
  total$复核时间=substr(total$复核时间,1,19)
  total$入库时间=substr(total$入库时间,1,19)
  for(h in 1:nrow(total)){
    insertVal=""
    for(i in 1:length(total)){
      if(cols[2,i]!=0){
        if(grepl("时间",cols[1,i])) {#"to_date('','yyyy-mm-dd hh24:mi:si')"}
          insertVal<-paste(insertVal,",to_date('",total[h,i],"','yyyy-MM-dd HH24:mi:ss')",sep="")
        }
        else{
          insertVal<-paste(insertVal,",'",total[h,i],"'",sep="") 
        }
      }
    }
    insertVal=substring(insertVal,2)
    insertSql=paste(insertCol,insertVal,")",sep=" ")
    #msg<-tryCatch({dbSendUpdate(conn,insertSql)},error=function(e){insertSql})
    #return ( paste ( msg , collapse = "\n" ) )
    dbSendUpdate(conn,insertSql)
  }
}


first_category_name = list.files(sourceDir) 
dir = paste(sourceDir,"/",first_category_name,sep="")
n = length(dir) 
total=read.xlsx(file=dir[1],sheetIndex=1,encoding='UTF-8',startRow=4,colClasses= c(rep.int('character', 50)))
cols<-rbind(colnames(total),rep(0,length(colnames(total))))
for(i in 1:length(colnames(total))){
  if(cols[1,i]=="卡号") cols[2,i]="CARD_ID"
  if(cols[1,i]=="手机号") cols[2,i]="CELL_PHONE_NUMBER"
  if(cols[1,i]=="交易流水号") cols[2,i]="TRADE_NUM"
  if(cols[1,i]=="支付流水号") cols[2,i]="PAY_NUM"
  if(cols[1,i]=="交易单位") cols[2,i]="TRADE_COMPANY"
  if(cols[1,i]=="充电方式") cols[2,i]="RECHARGER_TYPE"
  if(cols[1,i]=="充电桩编号") cols[2,i]="PILE_NUM"
  if(cols[1,i]=="充电站") cols[2,i]="STATION_NAME"
  if(cols[1,i]=="订单创建时间") cols[2,i]="ORDER_CREATION_TIME"
  if(cols[1,i]=="订单状态") cols[2,i]="ORDER_STATE"
  if(cols[1,i]=="交易电量.kwh") cols[2,i]="TRADE_ELECTRICITY"
  if(cols[1,i]=="电费.元") cols[2,i]="ELECTRICITY_FEES"
  if(cols[1,i]=="服务费.元") cols[2,i]="SERVICE_CHARGE"
  if(cols[1,i]=="交易金额.元") cols[2,i]="TRADE_MONEY"
  if(cols[1,i]=="开始时间") cols[2,i]="STARTING_TIME"
  if(cols[1,i]=="结束时间") cols[2,i]="ENDING_TIME"
  if(cols[1,i]=="交易结束原因") cols[2,i]="ENDING_REASON"
  if(cols[1,i]=="复核流水号") cols[2,i]="CHECK_NUM"
  if(cols[1,i]=="复核状态") cols[2,i]="CHECK_STATE"
  if(cols[1,i]=="复核人") cols[2,i]="CHECK_PERSON"
  if(cols[1,i]=="复核时间") cols[2,i]="CHECK_TIME"
  if(cols[1,i]=="是否开具发") cols[2,i]="IF_OR_NOT_INVOICE"
  if(cols[1,i]=="商户编号") cols[2,i]="MERCHANT_NUM"
  if(cols[1,i]=="业务类型") cols[2,i]="SERVICE_TYPE"
  if(cols[1,i]=="尖电量") cols[2,i]="TOP_ELECTRICITY"
  if(cols[1,i]=="峰电量") cols[2,i]="PEAK_ELECTRICITY"
  if(cols[1,i]=="平电量") cols[2,i]="FLAT_ELECTRICITY"
  if(cols[1,i]=="谷电量") cols[2,i]="VALLEY_ELECTRICITY"
  if(cols[1,i]=="抄表电量.kwh") cols[2,i]="RECORD_ELECTRICITY"
  if(cols[1,i]=="电表总起值") cols[2,i]="START_VALUE"
  if(cols[1,i]=="电表总止值") cols[2,i]="ENDING_VALUE"
  if(cols[1,i]=="冻结金额") cols[2,i]="FREEZING_AMOUNT"
  if(cols[1,i]=="钱包扣款前余额.元") cols[2,i]="BALANCE_BEFORE_DEDUCTING"
  if(cols[1,i]=="钱包扣款后余额.元") cols[2,i]="BALANCE_AFTER_DEDUCTING"
  if(cols[1,i]=="是否清算") cols[2,i]="IF_PAY"
  if(cols[1,i]=="入库时间") cols[2,i]="STORAGE_TIME"
  if(cols[1,i]=="是否开具发票") cols[2,i]="IF_OR_NOT_INVOICE"
}
insertCol=""
for(i in 1:length(total)){
  if(cols[2,i]!=0){
      insertCol<-paste(insertCol,cols[2,i],sep=",") 
  }
}
insertCol=paste(paste("insert into R_RECHARGER_REPORT(",substring(insertCol,2)),") values(")
insertCol
drv<-JDBC("oracle.jdbc.driver.OracleDriver",paste(workDir,"/ojdbc14.jar",sep=""), identifier.quote="/") 
conn <- dbConnect(drv, "jdbc:oracle:thin:@127.0.0.1:1521:orcl","ddqc","Ddqc1234")
f_InsertValues(total,conn)
##########
for(i in 2:n){         #对于每个一级目录(文件夹)
  total<-read.xlsx(file=dir[i],sheetIndex=1,encoding='UTF-8',startRow=4,colClasses= c(rep.int('character', 50)))
  #total<-read.xlsx(file=dir[i],sheetIndex=1,encoding='UTF-8',colClasses= c(rep.int('character', 50)))
  f_InsertValues(total,conn)
}
dbDisconnect(conn)
#write.csv(total,"F:/zjwork/ddqc/merge.csv",row.names = F,col.names= T)
#write.xlsx(total,"F:/zjwork/ddqc/merge.xlsx",row.names = F,col.names= T)#单独保存在每个文件夹下
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值