首页 > 解决方案 > RODBC - 为什么我的更新查询不起作用?

问题描述

我正在读取 .csv 文件并比较两个字段,一个在名为“Col”的表中,一个在名为“newdata”的 .csv 文件中。如果它们匹配,我会用“newdata”中的 avg_price 的值覆盖“COL”表中的 item_price。我没有收到任何错误,但 COL 没有任何变化。

library(RODBC)
db <- "C:/Projects/Online.accdb"
conn <- odbcConnectAccess2007(db) 
newData <- read.csv("C:/Projects/duplicates.csv", stringsAsFactors = F)
for(row in 1:nrow(newData)){
  query <- paste0(
    "UPDATE COL 
    SET item_price = ",newData$avg_price[row], 
    "WHERE COL.generic ='",newData$generic[row],"'"  
    )
   sqlQuery(conn, query)
}
close(conn)

标签: sqlrsql-updaterodbc

解决方案


从评论中,建议进行以下修复,这将更改输入文件的列名以匹配查询的名称:

library(RODBC)
db <- "C:/Projects/Online.accdb"
conn <- odbcConnectAccess2007(db) 
newData <- read.csv("C:/Projects/duplicates.csv", stringsAsFactors = F)
names(newData) <- c("generic","avg_price")
for(row in 1:nrow(newData)){
  query <- paste0("UPDATE COL SET item_price = ",newData$avg_price[row]," WHERE COL.generic ='",newData$generic[row],"'")
   sqlQuery(conn, query)
}
close(conn)

推荐阅读