#' 获取数据边连接
#'
#' @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)
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.