RSQLite;是否可以从数据框更新表?

时间:2018-01-25 10:02:48

标签: r database sqlite

我在看documentation of RSQLite。我创建了一个数据库并使用

推送了一些数据
mydb <- dbConnect(RSQLite::SQLite(), "myDB")
dbWriteTable(mydb, "mtcars", mtcars)

我的问题如下:如何更新此表,使用data.frame mtcars2,并指定要使用的主键?

我绝对不想遍历data.frame的所有行......

1 个答案:

答案 0 :(得分:0)

我最终使用shQuote()连接列表中的所有值,然后将其传递给sqlite UPDATE语句:

library(RSQLite)

mydb <- dbConnect(SQLite(), "myDB")

dbWriteTable(mydb, "mtcars", mtcars, row.names=T)

mtcars2 <- subset(mtcars, hp >= 150)

dbSendQuery(mydb, paste("UPDATE mtcars SET hp = 'MAX' WHERE row_names IN (", 
                        paste0(shQuote(rownames(mtcars2)), collapse=","), ")" ))

dbDisconnect(mydb)