我想从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})()
})
}
任何提示?
答案 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