首页 > 解决方案 > R 等效于 SQL 更新语句

问题描述

我使用以下语句使用以下语句更新到 postgreSQL db

update users
set col1='setup', 
col2= 232
where username='rod';

任何人都可以指导如何做类似于使用 R 吗?我不擅长 R

在此先感谢您的帮助

标签: sqlr

解决方案


由于您没有提供任何数据,因此我在这里创建了一些数据。

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


推荐阅读