我正在尝试使用RMySQL将站点ID参数作为整数从命令行中的Rscript传递到dbConnect中的SQL语句。但是我收到了一个错误
“mysqlQuickSQL中的错误(conn,statement,...):
未使用的参数(“3”,“AND name
='HVAC#1供应温度'ORDER BY created
DESC LIMIT 15;”)“
user@debian:~$ Rscript deltaTsql.R 3
是我从命令提示符运行的。
我的脚本是
library(RMySQL,quietly=TRUE)
library(rjson,quietly=TRUE)
args <- commandArgs(TRUE)
print(length(args))
as.integer(args[1])
con <- dbConnect(MySQL(), user="user", password="password", dbname="dbname", host="host")
r1.dat <- dbGetQuery(con, "SELECT `site_id`,`name`,`value`,`created` FROM `table` WHERE `site_id` = ", args[1], " AND `name` = 'HVAC #1 Supply Temp' ORDER BY `created` DESC LIMIT 15;")
r2.dat <- dbGetQuery(con, "SELECT `site_id`,`name`,`value`,`created` FROM `table` WHERE `site_id` =", args[1], " AND `name` = 'HVAC #1 Return Temp' ORDER BY `created` DESC LIMIT 15;")
r <- merge(r1.dat,r2.dat,by=c("created","site_id"))
r$supplytemp <- (r$value.x*(9/5)+32)
r$returntemp <- (r$value.y*(9/5)+32)
r$deltaT <- (r$returntemp-r$supplytemp)
deltaT <- r$deltaT
deltaTcheck <- function(deltaT) {
if (deltaT>25) {
return(1)
}
else if (deltaT<10) {
return(-1)
}
else {
return(0)
}
}
deltaTout <- vapply(deltaT, deltaTcheck, numeric(1))
deltaTjson <- toJSON(deltaTout)
deltaTjson
我希望能够将相同的参数传递给两个单独的SQL语句,以便我可以在将它们合并到站点ID之前单独获取它们。任何帮助或反馈将不胜感激。感谢
答案 0 :(得分:1)
您需要将paste()
SQL语句合并为一个字符值
r1.dat <- dbGetQuery(con, paste0("SELECT `site_id`,`name`,`value`,`created`
FROM `table`
WHERE `site_id` = ", args[1], " AND `name` = 'HVAC #1 Supply Temp'
ORDER BY `created` DESC LIMIT 15;"))