我的数据框看起来像这样:
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'
关于如何将变量插入数据库的任何想法?
答案 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')")