R/odbc.R

Defines functions odbc_getConn odbc_writeTable odbc_update odbc_select odbc_rds odbc_conn_rds_aux odbc_conn

Documented in odbc_conn odbc_conn_rds_aux odbc_getConn odbc_rds odbc_select odbc_update odbc_writeTable

#' 获取数据边连接
#'
#' @param ip 地址
#' @param port 端口
#' @param user_name 用户名
#' @param password 密码
#' @param db_name  数据库
#'
#' @return 按对回值
#' @import DBI
#' @import odbc
#' @export
#'
#' @examples
#' odbc_conn()
odbc_conn <- function(ip,port=1433,user_name,password,db_name) {
  con <- DBI::dbConnect(odbc::odbc(),Driver   = "ODBC Driver 17 for SQL Server",
                        Server   = ip,
                        Database = db_name,
                        UID      = user_name,
                        PWD      = password,
                        Port     = port)
  return(con)
}
#' 连接
#'
#' @param db_name 数据库名称
#'
#' @return
#'
#' @examples
#' odbc_conn_rds_aux()
odbc_conn_rds_aux  <- function(db_name) {
  conn = odbc_conn(ip = '115.159.201.178',port = 1433,user_name = 'sa',password = 'Hoolilay889@',
                   db_name = db_name )
  return(conn)

}

#' 数据库连接
#'
#' @param db_name 数据库名称
#'
#' @return 返回值
#' @export
#'
#' @examples
#' odbc_rds()
odbc_rds <- function(db_name) {
  res = odbc_conn_rds_aux(db_name = db_name)
  return(res)

}





#' 查询语句
#'
#' @param conn 连接
#' @param sql SQL
#'
#' @return 返回值
#' @import odbc
#' @import DBI
#' @export
#'
#' @examples
#' odbc_select()
odbc_select <- function(conn,sql) {
  data <- odbc::dbGetQuery(conn,sql)
  return(data)
}



#' 执行SQL语言
#'
#' @param conn 连接
#' @param sql SQL
#'
#' @return 返回值
#' @export
#'
#' @examples
#' odbc_update()
odbc_update <- function(conn,sql) {
  odbc::dbSendQuery(conn = conn,statement = sql)

}




# 将R对象写入到SQL_server表中-------
#' 将R对象写入到SQL_server表中
#'
#' @param conn 连接信息
#' @param table_name 表名
#' @param r_object R对象表
#' @param skip 是否跳过表名重复检查,默认为是,不需要重复性
#'
#' @return 返回T表示插入成功,F可能是表名重复等
#' @import RJDBC
#' @export
#'
#' @examples odbc_writeTable();
odbc_writeTable <- function(conn,table_name,r_object,append=FALSE){

  if (append == FALSE){
    res<- odbc::dbWriteTable(conn=conn, name = table_name, value=r_object)
  }else{
    res<- odbc::dbWriteTable(conn=conn, name=table_name, value=r_object,append=T, row.names=F, overwrite=F)
  }

  return(res)

}


#' 返回处理连接
#'
#' @param token 口令
#'
#' @return 返回值
#' @export
#'
#' @examples
#' odbc_getConn()
odbc_getConn <- function(token='9B6F803F-9D37-41A2-BDA0-70A7179AF0F3') {

  sql <- paste0("   select  FIp,FPort,FUserName,FPassword,FDbName    from t_sec_key
   where FToken ='",token,"'")
  data = odbc_select(odbc_rds('willingox'),sql)
  ncount = nrow(data)
  if(ncount >0){
    ip  = data$FIp
    port = as.integer(data$FPort)
    user_name = data$FUserName
    password = data$FPassword
    db_name = data$FDbName
    res = odbc_conn(ip =ip,port = port,user_name = user_name,password = password,db_name = db_name)

  }else{
    res = FALSE
  }
  return(res)


}
takewiki/tsda documentation built on Oct. 23, 2023, 3:28 a.m.