将变量插入SQL语句

时间:2016-02-22 15:57:49

标签: mysql sql r

我的数据框看起来像这样:

city <- c("Alkmaar", "Den Haag")
df <- data.frame(city)

我现在要做的是将值写入mysql数据库。因此,我会做以下事情:

 library(DBI)
 con <- dbConnect(RMySQL::MySQL(),
                dbname = "match_predictions",
                host = "109.237.221.34",
                port = 3306,
                user = "**",
                password = "***")


 for(i in 1:nrow(df)){
  var1 <- city[i]
 dbGetQuery(con, "INSERT INTO weather(city) VALUES(var1)")
 }

但这会产生错误:

  Error in .local(conn, statement, ...) : 
  could not run statement: Unknown column 'var1' in 'field list' 

关于如何将变量插入数据库的任何想法?

3 个答案:

答案 0 :(得分:1)

只需使用paste0为每个城市编写查询。我添加了单引号然后你只需要确保你在城市名称中转义任何单引号(如果发生这种情况)。

for(i in 1:nrow(df)){
  var1 <- city[i]
  # excape single quotes
  var2 <- gsub("\\'", "\\'\\'", var1)
  dbGetQuery(con, paste0("INSERT INTO weather(city) VALUES('", var2, "')"))
}

答案 1 :(得分:0)

试试这个:

library(DBI)
 con <- dbConnect(RMySQL::MySQL(),
                dbname = "match_predictions",
                host = "109.237.221.34",
                port = 3306,
                user = "**",
                password = "***")


 for(i in 1:nrow(df)){
  var1 <- city[i]
 dbGetQuery(con, cat("INSERT INTO weather(city) VALUES(", var1 <- city[i], ")"))
 }

答案 2 :(得分:0)

尝试使用此处显示的dbGetQuery行替换代码中的dbGetQuery行:

library(gsubfn)

fn$dbGetQuery(con, "INSERT INTO weather(city) VALUES('$var1')")