使用动态RJDBC连接创建R Shiny应用程序

时间:2018-04-20 16:38:33

标签: r shiny shinydashboard rjdbc

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

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

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

在下面的第一个案例中,当我手动更改my_data.csv的值时,我的Shiny app会自动更新:

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})()      

    })

}

任何提示?

1 个答案:

答案 0 :(得分:2)

问题在于

dbGetQuery(con, "SELECT * FROM MY_ORACLE_TABLE")

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

一种解决方案是将您的查询包装在shiny::reactivePoll()中,该shiny::reactiveFileReader()实际用于实现sudo mn --mac --controller,remote,ip=xx.xx.xx.xx --topo=linear,2 --switch=ovsk,datapath=user

有关详细信息,请参阅:

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