使用 R 变量向 RMySQL 中的 table 发送查询

Sending Queries to a table in RMySQL, using R variables

我正在尝试将我在 R 中创建并存储在数组中的数据写入 MySQL table。目前我就是这样做的,

for(z in 1:60){
  dbSendQuery(
    mydb, 
    "insert into minutely_predictions(id,server_pred, server_hi, server_lo, os_pred, os_hi, os_lo, sessions_id) values(server__id,server_pred[i],server_hi[i],server_lo[i],os_pred[i],os_hi[i],os_lo[i],sesh_id)"
  )  
}

我收到 MySQL 语法错误,有没有办法将我试图从 R 传递的变量传递到 MySQL?

谢谢。

我能够通过使用函数 sprintf 并以这种方式存储变量来修复它,希望这可以在将来帮助其他人。

queryform = "insert into table(parameters) values('%d' .....)"
query = sprintf(queryform, value[1])
send = dbSendQuery(mydb,query)

考虑参数化的最佳实践,避免将变量字符串连接或插值到 SQL 语句。

# PREPARED STATEMENT WITH QMARK PLACEHOLDERZ
sql <- "insert into minutely_predictions(
            id, server_pred, server_hi, server_lo, 
            os_pred, os_hi, os_lo, sessions_id) 
        values (?, ?, ?, ?, ?, ?, ?, ?)"

# ITERATE THROUGH ARRAYS AND BIND PARAMS
for(i in 1:60) { 
    stmt <- dbSendStatement(mydb, sql)
    dbBind(
        stmt,
        list(
            server__id, server_pred[i], server_hi[i], server_lo[i],
            os_pred[i], os_hi[i], os_lo[i], sesh_id
        )
    )
    dbClearResult(stmt)
}

注意:以上可能仅在使用首选 RMariaDB(替换旧版 RMySQL)时有效。