Обновление SQL таблиц в R - PullRequest
0 голосов
/ 11 июля 2020

Есть предложения по обновлению выбранных строк (на основе уникального идентификатора) в таблице SQL из R? Я могу запрашивать и записывать таблицы с помощью dbquery и dbwritetable, но еще не нашел функции или правильного синтаксиса оператора sql или функции oob для выполнения обновления. Мои требования просты, у меня есть фрейм данных (df) с обновлениями, которые я хотел бы отправить в таблицу данных (sql таблица) на основе уникальных идентификаторов.

Ответы [ 2 ]

1 голос
/ 11 июля 2020

Вы можете отправить выписку UPDATE с помощью dbSendQuery:

library(DBI)
library(RSQLite)
con <- DBI::dbConnect(RSQLite::SQLite(), ":memory:")

DBI::dbWriteTable(con, "mtcars", mtcars)
DBI::dbSendQuery(con, "UPDATE mtcars SET cyl = 7 WHERE cyl = 6")

<SQLiteResult>
  SQL  UPDATE mtcars SET cyl=7 WHERE cyl = 6
  ROWS Fetched: 0 [complete]
       Changed: 7
0 голосов
/ 13 июля 2020

Я пошел дальше и использовал комбинацию удаления и добавления в качестве другого способа обновления:

x <- c(id) # a vector of row id's to delete
xString <- toString(sprintf("'%s'", x)) 
sql_fmt <- "delete from TABLE NAME where id in (%s)"
sql <- sprintf(sql_fmt, xString)
dbSendQuery(con, sql)
dbWriteTable(conn = con,"TABLE NAME",data frame,append = T)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...