Действительно поздно, мой ответ, но, возможно, все-таки полезно ...
Там не одна функция (я знаю) в/Odbc пакета DBI, но вы можете повторить поведение обновления, используя заявление, подготовленное обновление (который должен работать быстрее, чем RODBC-х sqlUpdate
, поскольку он отправляет значение параметров в виде пакета на сервер SQL:
library(DBI)
library(odbc)
con <- dbConnect(odbc::odbc(), driver="{SQL Server Native Client 11.0}", server="dbserver.domain.com\\default,1234", Trusted_Connection = "yes", database = "test") # assumes Microsoft SQL Server
dbWriteTable(con, "iris", iris, row.names = TRUE) # create and populate a table (adding the row names as a separate columns used as row ID)
update <- dbSendQuery(con, 'update iris set "Sepal.Length"=?, "Sepal.Width"=?, "Petal.Length"=?, "Petal.Width"=?, "Species"=? WHERE row_names=?')
# create a modified version of `iris`
iris2 <- iris
iris2$Sepal.Length <- 5
iris2$Petal.Width[2] <- 1
iris2$row_names <- rownames(iris) # use the row names as unique row ID
dbBind(update, iris2) # send the updated data
dbClearResult(update) # release the prepared statement
# now read the modified data - you will see the updates did work
data1 <- dbReadTable(con, "iris")
dbDisconnect(con)
Это работает только если у вас есть первичный ключ, который я создал в приведенном выше примере, используя имена строк, которые уникальное число увеличилось на 1 для каждой строки ...
Для получения дополнительной информации о пакете odbc
я использовал в заявлении DBI dbConnect
см: https://github.com/rstats-db/odbc
См 'dbWriteTable'. –
Спасибо, что работает для 'INSERT', но как выполнить' UPDATE'? – mchen