0
我想通過命令行上的Rscript將一個站點ID參數作爲整數傳遞給使用RMySQL的dbConnect內部的SQL語句。但是我收到一個錯誤 「mysqlQuickSQL(conn,statement,...)中的錯誤: 未使用的參數(」3「,」AND name
='HVAC#1 Supply Temp'ORDER BY created
DESC LIMIT 15;「)」R - 我可以將使用Rscript的命令行參數傳遞給使用RMySQL dbConnect的查詢嗎?
[email protected]:~$ 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之前單獨搶兩者。任何幫助或反饋將不勝感激。由於
這將是更安全的使用參數化查詢 – hadley