【问题标题】:Update multiple columns of a table in SQL Server using R使用 R 更新 SQL Server 中表的多个列
【发布时间】: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)
}

有什么建议吗?

谢谢。

【问题讨论】:

    标签: sql r for-loop sql-update rodbc


    【解决方案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)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-03-11
        • 2014-07-20
        • 2020-05-17
        • 1970-01-01
        • 2010-11-13
        • 1970-01-01
        • 1970-01-01
        • 2011-06-03
        相关资源
        最近更新 更多