R/040-dbms.R

Defines functions db_truncateTable2 db_truncateTable db_dropTable db_readTable db_writeTable2 db_writeTable db_is_newTable db_tableNames sql_delete2 sql_insert2 sql_dbGetFields sql_dbGetTables sql_update2 sql_update sql_select2 sql_select sqlserver_jdbc_driver

Documented in db_dropTable db_is_newTable db_readTable db_tableNames db_truncateTable db_truncateTable2 db_writeTable db_writeTable2 sql_dbGetFields sql_dbGetTables sql_delete2 sql_insert2 sql_select sql_select2 sqlserver_jdbc_driver sql_update sql_update2

#' 定义一下虚拟的jdbc_dirver类
#'
#' @slot driver_name character. 驱动类型
#' @slot driver_location character.驱动位置
#' @slot os_type character. 操作系统类型
#' @slot db_type 数据库类型
#'
#' @return 返回值
#' @export
#'
#' @examples jdbc_dirver
setClass("jdbc_driver", slots = c(driver_name = "character",
                                  driver_location='character',
                                  os_type='character',
                                  db_type='character'),
         contains = 'VIRTUAL')

#' 定义sqlserver_jdbc_driver类
#'
#' @return 返回值
#' @export
#'
#' @examples sqlserver_jdbc_driver();
setClass("sqlserver_jdbc_driver", contains = 'jdbc_driver',
         prototype = prototype(driver_name='com.microsoft.sqlserver.jdbc.SQLServerDriver',
                               driver_location="/opt/sqljdbc_7.2/enu/mssql-jdbc-7.2.2.jre8.jar",
                               os_type='linux',
                               db_type='sqlserver'))
#' 定义sqlserver_jdbc_driver入口实例化函数
#'
#' @param driver_location 驱动存放位置
#' @param os_type 操作系统类型
#'
#' @return 返回值
#' @export
#'
#' @examples sqlserver_jdbc_driver();
sqlserver_jdbc_driver <- function(driver_location='/opt/sqljdbc_7.2/enu/mssql-jdbc-7.2.2.jre8.jar',
                                  os_type='linux') {
  res1 <- new('sqlserver_jdbc_driver');
  res2 <- initialize(res1,driver_location=driver_location,os_type=os_type);
  return(res2)
}

#' 定义连接的通用函数
#'
#' @param x 名称对
#' @param server_ip 服务器地址
#' @param db_name 数据库名称
#' @param username 用户名
#' @param password  密码
#'
#' @return 返回值
#' @export
#'
#' @examples conn();
setGeneric("conn",
           signature = "jdbc_driver",
           function(jdbc_driver,server_ip,port,db_name,username,password) standardGeneric("conn"))

#' 用于生成conn相应的sqlserver_jdbc_driver对应的连接信息
#'
#' @param jdbc_driver sqlserver_jdbc_driver.
#'
#' @return 返回值
#' @import RJDBC
#' @export
#'
#' @examples conn();
setMethod("conn",
          c("jdbc_driver" = "sqlserver_jdbc_driver"),
          function(jdbc_driver,server_ip,port='1433',db_name,username,password){
            #code here
            sqlserver_driver <- JDBC(jdbc_driver@driver_name,jdbc_driver@driver_location);
            sql_driver_prefix <-'jdbc:sqlserver://';
            jdbc_str <-paste(sql_driver_prefix,server_ip,":",port,";databaseName=",db_name,sep="");

            res <- dbConnect(sqlserver_driver, jdbc_str, username, password);
            return(res);
                      })


#' 执行sql的查询语句
#'
#' @param conn 连接信息
#' @param sql_str 语句
#'
#' @return 返回值
#' @import RJDBC
#' @export
#'
#' @examples sql_select();
sql_select <- function(conn,sql_str) {
  res <- dbGetQuery(conn,sql_str)
  return(res)
}



#' 处理后的SQL语言
#'
#' @param token 口令
#' @param sql SQL语言
#'
#' @return 返回数据框
#'
#' @export
#'
#' @examples
#' sql_select2()
sql_select2 <- function(token,sql) {
  conn <- sql_getConn(token = token)
  res <- sql_select(conn = conn,sql_str = sql)
  return(res)

}

# 更新update数据------
#' 更新update数据
#'
#' @param conn 连接信息
#' @param sql_str sql信息
#'
#' @return 返回值
#' @import RJDBC
#' @export
#'
#' @examples sql_update();
sql_update <- function(conn,sql_str) {

  dbSendUpdate(conn,sql_str);

}


# 更新update数据------
#' 更新update数据
#'
#' @param sql_str sql信息
#' @param token 口令
#'
#' @return 返回值
#' @import RJDBC
#' @export
#'
#' @examples sql_update2();
sql_update2 <- function(token,sql_str) {
  conn <- sql_getConn(token = token)
  res <-dbSendUpdate(conn,sql_str)
  return(res)

}


#' 获取表名
#'
#' @param token  口令
#'
#' @return 返回值
#' @export
#'
#' @examples
#' sql_dbGetTables()
sql_dbGetTables <- function(token) {
  conn <- sql_getConn(token = token)
  res <-dbGetTables(conn)
  return(res)

}


#' 获取表名
#'
#' @param token  口令
#'
#' @return 返回值
#' @export
#'
#' @examples
#' sql_dbGetTables()
sql_dbGetFields <- function(token,table_name) {
  conn <- sql_getConn(token = token)
  res <-dbListFields(conn,table_name)
  return(res)

}

# 新增数据数据------
#' 更新update数据
#'
#' @param sql_str sql信息
#' @param token 口令
#'
#' @return 返回值
#' @import RJDBC
#' @export
#'
#' @examples
#' sql_insert2();
sql_insert2 <- function(token,sql_str) {
  conn <- sql_getConn(token = token)
  res <-dbSendUpdate(conn,sql_str)
  return(res)

}

# 更新删除数据------
#' 更新update数据
#'
#' @param sql_str sql信息
#' @param token 口令
#'
#' @return 返回值
#' @import RJDBC
#' @export
#'
#' @examples sql_update2();
sql_delete2 <- function(token,sql_str) {
  conn <- sql_getConn(token = token)
  res <-dbSendUpdate(conn,sql_str)
  return(res)

}




# 获取一个数据库中的所有表名-----
#' 获取一个数据库中的所有表名
#'
#' @param conn 连接信息
#'
#' @return 返回值
#' @import RJDBC
#' @export
#'
#' @examples db_tableNames()
db_tableNames <- function(conn) {
  res <- dbListTables(conn);
  return(res);

}

# 判断是否为新表-----
#' 判断是否为新表
#'
#' @param conn 数据库连接
#' @param table_name 数据库表名
#'
#' @return 返回值
#' @import RJDBC
#' @export
#'
#' @examples db_is_newTable();
db_is_newTable <- function(conn,table_name) {

   res <-dbExistsTable(conn,table_name);
   res <- !res
}

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

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

  return(res)

}


# 将R对象写入到SQL_server表中-------
#' 将R对象写入到SQL_server表中
#'
#' @param table_name 表名
#' @param token  口令
#' @param append 是否附加
#' @param r_object R对象表
#'
#' @return 返回T表示插入成功,F可能是表名重复等
#' @import RJDBC
#' @export
#'
#' @examples db_writeTable2();
db_writeTable2 <- function(token,table_name,r_object,append=FALSE){
  conn <- sql_getConn(token = token)

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

  return(res)

}
# 读取整表数据------
#' 读取整表数据
#'
#' @param conn 数据库连接
#' @param table_name 表名
#'
#' @return 返回值
#' @import RJDBC
#' @export
#'
#' @examples db_readTable();
db_readTable <- function(conn,table_name) {
  res <- dbReadTable(conn, table_name)
  return(res)


}

#' 删除数据库中的表结构
#'
#' @param conn 连接信息
#' @param table_name 表名
#'
#' @return 返回值
#' @export
#'
#' @examples db_dropTable()
db_dropTable <- function(conn,table_name) {
  dbRemoveTable(conn,table_name);
}




#' 删除表中的数据
#'
#' @param token 口令
#' @param table_name 表名
#'
#' @return 返回值
#' @export
#'
#' @examples
#' db_truncateTable()
db_truncateTable <- function(token,table_name ='rds_sales_saleOrderFSaleOrderPlan') {
  conn = sql_getConn(token = token)
  sql = paste0("truncate table  ",table_name )
  res = sql_update(conn,sql)
  return(res)

}

#' 删除表中的数据
#'
#' @param token 口令
#' @param table_name 表名
#'
#' @return 返回值
#' @export
#'
#' @examples
#' db_truncateTable2()
db_truncateTable2 <- function(conn,table_name ='rds_sales_saleOrderFSaleOrderPlan') {

  sql = paste0("truncate table  ",table_name )
  res = sql_update(conn,sql)
  return(res)

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