使用 R 更新 SQL Server 中表的多个列
Posted
技术标签:
【中文标题】使用 R 更新 SQL Server 中表的多个列【英文标题】:Update multiple columns of a table in SQL Server using R 【发布时间】:2017-08-19 07:10:45 【问题描述】:这是 SQL Server 中的table1
:
Last Country colA colB colC
------------------------------------
1 ARG NA NA NA
2 NULL NA NA NA
3 CAM NA NA NA
4 NULL NA NA NA
5 NULL NA NA NA
这是我在 R 中的数据框 DF
:
colA colB colc
20 foo 1.2
12 bar 12.2
1 tam 10.3
15 red 0.8
现在我如何迭代DF
中的每一行,以便可以在table1
中更新它?
这是r中的代码
conn <- odbcDriverConnect('DRIVER=SQL Server;SERVER=dusty;DATABASE=Area;UID=admin;PWD=abcd@123;autocommit=True')
data <- sqlQuery(conn,paste("select * from table1;"))
for(i in 1:length(DF))
update.query <- paste("UPDATE table1 ",
"SET colA=?",
"SET colB=?",
"SET colC=?",
"WHERE Country is NULL", sep="")
dummy <- sqlQuery(conn, update.query)
有什么建议吗?
谢谢。
【问题讨论】:
【参考方案1】:我认为这样的事情应该为你做。
library(RODBC)
connHandle <- odbcConnect("cakesDatabase")
newData <- read.csv("newData.csv", stringsAsFactors = F)
for(row in 1:nrow(newData))
query <- paste0(
"UPDATE cakes
SET price = ", newData$price[row], "
WHERE cake = '", newData$cake[row], "'"
)
sqlQuery(connHandle, query)
odbcClose(connHandle)
【讨论】:
【参考方案2】:library("RODBC")
connection <- odbcDriverConnect('driver=SQL Server;
server=server_name;
database=db_name;
trusted_connection=true')
column1 <- 6
column2 <-999
column3 <- 999
column4 <- 44
column5 <- -128
#update data
update_data <- paste0("UPDATE TABLE
SET column2 = ",column2,", column3 = ",column3," , column4 =
",column4,", column5 = ",column5,"
where column1= ",column1,"")
#execute updata data
update_recorddf<-sqlQuery(connection,update_data)
odbcClose(connection)
【讨论】:
以上是关于使用 R 更新 SQL Server 中表的多个列的主要内容,如果未能解决你的问题,请参考以下文章
使用带有 Linq to Sql 的 Sql Server 唯一标识符/更新日期列 - 最佳方法
根据 SQL Server 2008R2 中表中的列获取计数