- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
只是想知道是否有任何方法可以通过 dbGetQuery()
的 params
将任意数量的参数传递给 IN
子句
例如,给定
dbcon <- dbConnect(RPostgres::Postgres())
# or: dbcon <- dbConnect(RPostgreSQL::PostgreSQL())
dbExecute(dbcon, "CREATE TEMP TABLE foo AS SELECT i FROM generate_series(1, 10) x(i);")
我可以做这样的事情吗:
dbGetQuery(dbcon, "SELECT * FROM foo WHERE i IN (1, 2, 3)")
其中标识符是“短值列表”,即通常少于 10 个整数或字符串。我以为我可以做类似的事情:
ids <- c(1, 2, 3)
dbGetQuery(dbcon, "SELECT * FROM foo WHERE i IN $1", list(ids))
但我能做的最好的是:
ids <- '{1,2,3}'
dbGetQuery(dbcon, "SELECT * FROM foo WHERE i = ANY($1)", list(ids))
但是从一组字符串生成 ids
有点容易出错。
最佳答案
您想使用 DBI::sqlInterpolate
生成动态查询。这比不安全地将查询粘贴在一起要好。然而,它对矢量输入的效果不是很好,因此,如果您可以忍受更多的包导入,dbplyr::translate_sql
就足够了。示例:
require(DBI)
require(dbplyr)
con <- dbConnect(RSQLite::SQLite(), dbname = ":memory:")
month_input <- SQL(!!translate_sql(month.abb))
# Or if you don't like lazy-eval NSE nonsense
month_input <- dbplyr:::escape(month.abb)
print(month_input)
# <SQL> ('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec')
query <- sqlInterpolate(con, "SELECT * FROM colours WHERE month IN ?months",
months = month_input)
print(query)
# <SQL> SELECT * FROM colours WHERE month IN ('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec')
关于r - 将 RPostgres 或 RPostgreSQL dbGetQuery() 参数传递给 IN 运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53616519/
我正在尝试安装 R-Package RPostgreSQL,但出现以下错误, Error in dyn.load(file, DLLpath = DLLpath, ...) : unable to
我想将完整的数据框导出到已经在数据库(postgresql)中创建并包含类似数据的表中。 我发现很少有关于 dbwrite 表的问题(....overwrite = TRUE),我不想覆盖表中已经存在
我有一个 Shiny 的应用程序,它使用 RPostgreSQL 连接到数据库.在应用程序结束时,连接关闭,驱动程序应该被卸载,但我收到一个错误,警告我连接没有关闭。 代码如下所示: # in th
我在使用 RPostgreSQL 导入表时遇到问题。我的意思是,一列是 bigint 格式,当我创建简单查询时: df<- dbGetQuery(con, "
我正在尝试通过 R 访问 PostgreSQL 数据库。我尝试了以下代码: library(RPostgreSQL) library(DBI) drv sessionInfo()
目前我正在构建一个 Shiny 的应用程序,使用对 PostgreSQL 数据库的多个查询(主要是 SELECT 和 INSERT 语句)。该应用程序有效,但我正在努力使其更快。当我比较使用 RPos
我需要处理,我想是大整数,主键值 1380742793415240 . 在 R 中,我可以轻松调整选项(scipen=100),但我需要将该数据存储在 postgres db 中。 我已经尝试使用 d
我正在寻找一个 R 命令来列出 PostgreSQL 服务器中的可用数据库。我在 R 中使用 RPostgreSQL 包。 我知道如何连接到服务器,但我唯一需要知道的是如何列出可用数据库的名称。 最佳
我使用 RPostgresql 连接到本地 Postgres 数据库。通常我们使用 dbGetQuery 将查询作为字符串发送。有没有办法打印查询的执行时间? 在 postgres 中,\timing
警告:包“RPostgreSQL_0.4.tar.gz”无效错误:错误:未指定包警告信息: In install.packages("RPostgreSQL_0.4.tar.gz", lib = "/
我在使用 RPostgreSQL 包时遇到的一件事是 dbWriteTable(... overwrite=TRUE) 似乎破坏了现有的表结构(数据类型和约束),而 dbRemoveTable() 相
我是新手,想了解 R 和 PostgreSQL 如何相互交流。我最近只将 R 用于数据分析,但现在,我正在尝试直接从数据库导入。我已经安装了 RPostgreSQL 并连接到我的数据库,我可以看到所有
我正在使用 RPostgreSQL读取和写入数据。从任何模式中读取都可以完美运行,但我无法写入非公共(public)模式。例如,以下代码在 public 架构中放置了一个表,名称为 myschema.
我正在尝试设置一个并行任务,其中每个工作人员都需要进行数据库查询。我正在尝试为每个工作人员设置一个连接,如 this question 中所示但每次我尝试它都会返回 无论我注册了多少 worker 。
我想知道是否有办法通过 R (RPostgreSQL) 将 PostgreSQL 转储导入 PostgreSQL 数据库。 我知道这是我们通过 RPostgreSQL 将 R 中的 csv 或数据表写
我在 RPostgreSQL 中处理日期时间时遇到问题。具体来说,它涉及具有 UTC 时区的 POSIXct 对象,在上传到 postgres 数据库期间自动调整为夏令时。一个简单的例子: libra
我是 PostgreSQL 的新手,我正在尝试使用 R 将表写入 PostgreSQL。请参阅下面的 R 代码;首先制作一些可重现的数据框: > Time Department Pro_Type Ma
我正在使用 RPostgreSQL 连接到本地数据库。该设置在我的 Linux 机器上运行良好。 R 2.11.1,Postgres 8.4。 我正在使用带有多核 (doMC) 并行后端的“forea
我正在尝试使用 RPostgreSQL 将数据插入到预先存在的 PostgreSQL 表中,但我无法弄清楚 SQL 参数(准备好的语句)的语法。 例如假设我想做以下事情 插入 mytable (a,b
当使用 RPostgreSQL 时,我发现我不能以同样的方式使用 sqldf。例如,如果我使用以下代码加载库并将数据读入数据框: library(RPostgreSQL) drv 10") 这不再有
我是一名优秀的程序员,十分优秀!