来自 Shiny 的 RODBC 多输入
Posted
技术标签:
【中文标题】来自 Shiny 的 RODBC 多输入【英文标题】:RODBC Multiple Inputs from Shiny 【发布时间】:2014-10-01 00:14:44 【问题描述】:我有一个带有复选框组输入的 Shiny 应用程序。用户可以选择多个输入。我还有一个链接到数据库的 ODBC 连接。该过程将是,当用户从复选框组中选择项目时,该用户输入将成为 sql 查询中字符串的一部分以过滤数据。
UI.R(部分展示示例)
checkboxGroupInput('Type', 'Type', c(
"AX"="AX",
"AY"="AY",
"AZ"="AZ",
"BGB"="BGB",
"BT"="BT",
"BX"="BX",
"BXT"="BXT",
"C"="C",
"CNT"="CNT")),
表中“Type”信息所在的列称为COMPONENT,所以我使用RODBC的sql查询是
data <- odbcConnect("database", uid="username", pwd="password")
query <- (SELECT ID, NAME, TYPE FROM COMPONENT WHERE TYPE LIKE Input$Type)
df <- odbcQuery(data, query)
查询行不起作用,但我不知道如何获取多个输入并将它们正确放置在查询中。此外,还有一个额外的复杂程度,我不知道如何处理。数据库中的数据是字母数字,所以可能不是AX,而是AX14或AX 71。另外,因为有一些单字母类型,使用通配符似乎有点困难。
【问题讨论】:
你连接的是什么类型的数据库? @MatthewPlourde 这是一个 Oracle 数据库。这是一个 32 位数据源,我在 64 位机器上运行。 DSN 配置正确,因为我能够在控制台中进行简单的查询 看看this question的答案。 @MatthewPlourde 正则表达式看起来很有希望。解决后我会发布解决方案。谢谢 【参考方案1】:为了回答您关于“查询中的多个输入”的最初问题,我使用串联来实现这一点。
使用 paste0(),我写了如下内容:
type = "AX14" myQuery 我的查询 [1] "Select variable1, variable2 from my_table where type like AX14"
您可以添加一些小东西,例如单引号或通配符,如下所示:
myQuery 我的查询 [1] "从 my_table 中选择 variable1, variable2 where type like '%AX14%'"
然后继续实际运行查询:
df
【讨论】:
以上是关于来自 Shiny 的 RODBC 多输入的主要内容,如果未能解决你的问题,请参考以下文章
RODBC 包:如何获取“表是不是存在?”的逻辑值查询类型?