首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在RPostgreSQL查询中插入R列表

在RPostgreSQL查询中插入R列表
EN

Stack Overflow用户
提问于 2022-02-14 20:19:45
回答 2查看 152关注 0票数 1

我正在运行一个基于存储在R列表中的ID的自动列表的postgreSQL查询。我试图确定如何将R列表包含在我的查询中,这样我就不必每次运行查询时都对ID进行硬编码。

例如,我有一个生成列表的脚本

代码语言:javascript
复制
id <- c("001","002","003")

我的查询如下所示:

代码语言:javascript
复制
SELECT *
FROM my_query
WHERE my_query.id_col IN ('001', '002', '003')

我使用Rpostgres运行:

代码语言:javascript
复制
library(Rpostgres)
snappConnection <- DBI::dbConnect(RPostgres::Postgres(),
                                  host = "host",
                                  dbname = "dbname",
                                  user = "user",
                                  password = "pword",
                                  port = 0000)
core.data <- dbGetQuery(conn = snappConnection,statement = SELECT * FROM my_query WHERE my_query.id_col IN ('001', '002', '003'))

是否有方法从我的查询中引用我的"id“列表,以便当"id”更新到新值时,该查询也会更新到这些新值?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-02-14 20:34:02

来自胶水包的glue_sql应该可以工作:

代码语言:javascript
复制
query <- glue::glue_sql("
SELECT *
FROM my_query
WHERE my_query.id_col IN ({id*})              
", .con = snappConnection)

core.data <- dbGetQuery(conn = snappConnection, statement = query)
票数 1
EN

Stack Overflow用户

发布于 2022-02-14 22:00:58

@戴夫-爱迪生的回答解决了我的问题。在尝试他的方法的同时,我也让它发挥作用。

我将下面的查询保存为"my_query.sql“

代码语言:javascript
复制
SELECT *
FROM my_query
WHERE my_query.id_col IN ('string_to_replace')

然后创建一个字符串并在字符串上使用gsub。

代码语言:javascript
复制
library(tidyverse)
temp.script <-  read_file("my_query.sql")
core.data.script <- gsub('string_to_replace',paste0(id,collapse = "', '"),temp.script)

从那里开始,我就像上面那样运行了我的RPostgres脚本。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71117829

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档