6
我需要更新某些PostgreSQL
數據庫表中其他列的列值conditionnaly。我設法做到了在R中編寫一條SQL語句並使用dbExecute
從DBI
包中執行它。我可以在R中使用dplyr語法運行SQL更新語句嗎
library(dplyr)
library(DBI)
# Establish connection with database
con <- dbConnect(RPostgreSQL::PostgreSQL(), dbname = "myDb",
host="localhost", port= 5432, user="me",password = myPwd)
# Write SQL update statement
request <- paste("UPDATE table_to_update",
"SET var_to_change = 'new value' ",
"WHERE filter_var = 'filter' ")
# Back-end execution
con %>% dbExecute(request)
是否有可能只使用dplyr
語法?我試過了,出於好奇,
con %>% tbl("table_to_update") %>%
mutate(var_to_change = if (filter_var == 'filter') 'new value' else var_to_change)
其中R中的作品,但顯然並沒有在DB,因爲它採用的是select
聲明。 copy_to
只允許append
和overwite
選項,所以我不能看到如何使用它,除非刪除然後追加過濾意見...