我们已经在Windows机器上安装了Datastax ODBC Driver 2.5,以通过带有DBI和odbc软件包的R访问Cassandra。我们尝试将带有存储在数据帧(querypara)中的参数的查询发送到cassandra。 Week First Day,device_id和pom_id是Cassandra中的键。
library(DBI)
library(odbc)
con <- dbConnect(odbc(),
Driver = "DataStax Cassandra ODBC Driver",
host = "LOCALIP",
Database = "rsproduction",
AuthMech = "No Authentication",
port = "9042")
prepared_statement <- dbSendQuery(con, paste0("SELECT * FROM rsproduction.values_by_poms
WHERE device_id = ?
AND pom_id = ?
AND week_first_day = ?"))
querypara <- data.frame("device_id" = cassandra_query$device_id, "pom_id" = cassandra_query$pom_id, "wfd" = cassandra_query$wfd_epoch_start)
i = 0
for (i in 1:nrow(querypara)){
dfname <- paste0("output",i)
dbBind(prepared_statement, list(paste0(querypara$device_id[i]), paste0(querypara$pom_id[i]), paste0(querypara$wfd[i])))
tmpname <- dbFetch(prepared_statement)
assign(dfname, tmpname)
# dbClearResult(prepared_statement)
}
第一个输出已成功写入(!),但是在第二个参数集/查询中,我们得到一个错误。
Error in result_bind(res@ptr, as.list(params)) :
external pointer is not valid
对此表示感谢。
谢谢。