簡體   English   中英

將變量插入SQL語句

[英]Insert a variable into a SQL statement

我有一個看起來像這樣的數據框:

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' 

關於如何將變量插入數據庫的任何想法?

只需使用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, "')"))
}

嘗試這個:

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], ")"))
 }

嘗試用下面顯示的dbGetQuery行替換代碼中的dbGetQuery行:

library(gsubfn)

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM