【问题标题】:Create R Shiny app with dynamic RJDBC connection使用动态 RJDBC 连接创建 R Shiny 应用程序
【发布时间】:2018-04-20 16:38:33
【问题描述】:

我想从 R Shiny pacakge 中找到与 reactiveFileReaderfunction 类似的函数,以使用 RJDBC 驱动程序从 Oracle 数据库中动态读取数据。

请在下面找到一个示例来解释我的问题:

假设 my_data.csv 是我的 MY_ORACLE_TABLE(托管在我的 oracle 数据库上)的提取。

在下面的第一种情况下,当我手动更改 my_data.csv 的值时,我的 Shiny 应用程序会自动更新:

server <- function(input, output) {
  output$table1 <- DT::renderDataTable({

    reactiveFileReader(1000,session = NULL,filePath = "my_data.csv",readFunc = read.csv2)()     

    })

}

但在下面的第二种情况下,假设 MY_ORACLE_TABLE 更新,我必须重新加载我的 Shiny 应用 URL 以进行显示更新:

server <- function(input, output) {
  output$table1 <- DT::renderDataTable({

    reactive({dbGetQuery(con, "SELECT * FROM MY_ORACLE_TABLE})()      

    })

}

任何提示?

【问题讨论】:

    标签: r shiny shinydashboard rjdbc


    【解决方案1】:

    问题是

    dbGetQuery(con, "SELECT * FROM MY_ORACLE_TABLE")
    

    不依赖于任何反应式上下文,并且不会在数据库中的某些内容发生更改时自动重新运行。

    一种解决方案是将您的查询包装在shiny::reactivePoll() 中,这实际上是用于实现shiny::reactiveFileReader()

    有关详细信息,请参阅:

    https://shiny.rstudio.com/reference/shiny/1.0.3/reactivePoll.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-06-12
      • 1970-01-01
      • 2017-04-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-27
      • 2023-03-14
      相关资源
      最近更新 更多