Tôi cần cập nhật các giá trị cột có điều kiện trên các cột khác trong một số bảng cơ sở dữ liệu PostgreSQL
. Tôi quản lý để làm điều đó bằng văn bản một câu lệnh SQL trong R và thực hiện nó với dbExecute
từ gói DBI
.Tôi có thể chạy câu lệnh cập nhật SQL chỉ bằng cú pháp dplyr trong R
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)
Chỉ có thể sử dụng cú pháp dplyr
? Tôi cố gắng, vì tò mò,
con %>% tbl("table_to_update") %>%
mutate(var_to_change = if (filter_var == 'filter') 'new value' else var_to_change)
mà làm việc trong R nhưng rõ ràng là không có gì trong db vì nó sử dụng một tuyên bố select
. copy_to
chỉ cho phép các tùy chọn append
và overwite
, vì vậy tôi không thể xem cách sử dụng trừ khi xóa sau đó thêm các quan sát đã lọc ...