sql - R 等效于 SQL 更新语句
问题描述
我使用以下语句使用以下语句更新到 postgreSQL db
update users
set col1='setup',
col2= 232
where username='rod';
任何人都可以指导如何做类似于使用 R 吗?我不擅长 R
在此先感谢您的帮助
解决方案
由于您没有提供任何数据,因此我在这里创建了一些数据。
users <- data.frame(username = c('rod','stewart','happy'), col1 = c(NA_character_,'do','run'), col2 = c(111,23,145), stringsAsFactors = FALSE)
要使用基础 R 进行更新:
users[users$username == 'rod', c('col1','col2')] <- c('setup', 232)
如果您更喜欢data.table
包提供的更明确的语法,您可以执行:
library(data.table)
setDT(users)
users[username == 'rod', `:=`(col1 = 'setup', col2 = 232)]
要通过 更新您的数据库RPostgreSQL
,您首先需要创建数据库连接,然后只需将您的查询存储在一个字符串中,例如
con <- dbConnect('PostgreSQL', dbname = <your database name>, user=<user>, password= <password>)
statement <- "update <schema>.users set col1='setup', col2= 232 where username='rod';"
dbGetQuery(con, statement)
dbDisconnect()
请注意,根据您的 PostgreSQL 配置,您可能还需要设置搜索路径dbGetQuery(con, 'set search_path = <schema>;')
我对 更熟悉RPostgres
,所以您可能需要仔细检查PostgreSQL
包的语法和小插曲。
编辑:似乎 RPostgreSQL 更喜欢dbGetQuery
发送更新和命令而不是dbSendQuery