Установка перезаписи == TRUE с использованием memdb и dbplyr - PullRequest
0 голосов
/ 22 апреля 2020

Следующее блестящее приложение работает при первом запуске, но выдает ошибки, если вы измените ввод вида, потому что имя таблицы уже существует в памяти. Мне было интересно, как установить перезапись == ИСТИНА, учитывая код ниже?

library(shiny)
library(tidyverse)
library(dbplyr)

ui <- fluidPage(
    selectInput("species", "Species", choices = unique(iris$Species), 
                selected = "setosa"),
    tableOutput("SQL_table"),
    actionButton("code", "View SQL"),
)


server <- function(input, output) {

    # render table
    output$SQL_table <- renderTable(
        head(iris %>% filter(Species == input[["species"]]))
    )

    # generate query
    SQLquery <- reactive({
        sql_render(
            show_query(
                tbl_memdb(iris) %>%
                filter(Species == local(input$species))
            )
        )
    })

    # see query
    observeEvent( input$code, {
        showModal(
            modalDialog(
                SQLquery()
            )
        )
    })
}


shinyApp(ui = ui, server = server)

1 Ответ

0 голосов
/ 22 апреля 2020

, поскольку memdb_frame - это просто вызов функции copy_to, мы можем использовать его непосредственно для установки overwrite = TRUE

copy_to(src_memdb(), iris, name = 'iris', overwrite=TRUE)
...