【问题标题】:RODBC Multiple Inputs from Shiny来自 Shiny 的 RODBC 多输入
【发布时间】: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 正则表达式看起来很有希望。解决后我会发布解决方案。谢谢

标签: sql r shiny rodbc


【解决方案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

【讨论】:

    猜你喜欢
    • 2015-09-08
    • 2018-11-03
    • 2014-05-31
    • 2023-04-09
    • 1970-01-01
    • 2019-02-15
    • 1970-01-01
    • 1970-01-01
    • 2016-03-22
    相关资源
    最近更新 更多