代码之家  ›  专栏  ›  技术社区  ›  JeanBertin

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

  •  2
  • JeanBertin  · 技术社区  · 6 年前

    reactiveFileReader 来自R的函数 Shiny pacakge使用从Oracle数据库动态读取数据 RJDBC 驾驶员

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

    假设my\u数据。csv是my\u ORACLE\u表(托管在my ORACLE数据库上)的提取。

    在下面的第一种情况下,当我手动更改my\u data的值时。csv,我的闪亮应用程序自动更新:

    server <- function(input, output) {
      output$table1 <- DT::renderDataTable({
    
        reactiveFileReader(1000,session = NULL,filePath = "my_data.csv",readFunc = read.csv2)()     
    
        })
    
    }
    

    但在下面的第二种情况下,假设MY\u ORACLE\u TABLE更新,我必须重新加载闪亮的应用程序URL以进行显示更新:

    server <- function(input, output) {
      output$table1 <- DT::renderDataTable({
    
        reactive({dbGetQuery(con, "SELECT * FROM MY_ORACLE_TABLE})()      
    
        })
    
    }
    

    有什么建议吗?

    1 回复  |  直到 6 年前
        1
  •  2
  •   ddisk    6 年前

    问题是

    dbGetQuery(con, "SELECT * FROM MY_ORACLE_TABLE")
    

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

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

    有关更多信息,请参阅:

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