sql - 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)
解决方案
从评论中,建议进行以下修复,这将更改输入文件的列名以匹配查询的名称:
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)
推荐阅读
- qt - 如何填充 QLineSeries 线和 X 轴之间的部分?
- javascript - 即使多个值发生变化,如何只调用一次观察组中的数据?
- android - 使用 mockito 在 android(kotlin) 中为交互者/演示者制作 junit 测试用例
- linux - 将 total_cov 放在突变类型和频率旁边以便于过滤
- c# - 如何删除 ListView C# 中的选定项目?
- java - 在 tomcat 上部署后的视频格式和 MIME 类型错误
- python - Python用反斜杠替换
- bokeh - 调试散景的提示
- excel - 根据单元格值插入行并向下填充
- java - 带有循环的 postDelayed 处理程序