来自 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 在 Shiny App 中存储数据

来自文本输入的表格中的R闪亮多行行

RODBC 包:如何获取“表是不是存在?”的逻辑值查询类型?

如何在R Shiny中使用renderUI触发renderDataTable进行输入?

让日文字符在 R Shiny 中显示

R Shiny:使用来自反应函数的数据制作反应图