将闪亮的数据存储到mySql

时间:2019-02-16 07:32:41

标签: mysql r shiny amazon-rds shiny-server

我想将我的应用程序输出插入到我的sql数据库中,我已经成功建立了数据库和闪亮应用程序之间的连接,这是我的代码

     library(shiny)
     library(DBI)
    ui <- fluidPage(
    textInput("id", "Enter your ID:", "1"),
 tableOutput("tbl")
)

server <- function(input, output, session) {
     output$tbl <- renderTable({
   conn <- dbConnect(
     drv = RMySQL::MySQL(),
  dbname = "shiny_database",
  host = "r.cr7lk1jwjdht.us-east-2.rds.amazonaws.com",
  username = "kartik",
  password = "12345678")
on.exit(dbDisconnect(conn), add = TRUE)
    query <- paste0("INSERT INTO db(id2 , id ) VALUES ('13','43') ")
  # dbGetQuery(conn, query)

 # query <- paste0("SELECT * FROM db WHERE id = '", input$id, "';")   
dbGetQuery(conn, query)

 })
  }
shinyApp(ui, server)

在这里,我可以使用插入查询来插入我的数据,但是当我要插入大量输出数据时,在这种情况下,我不能一次又一次使用插入查询。 任何人都可以帮助我如何插入我的数据。 搜索后,如果有可能我可以使用temp文件夹将数据放入数据库中,我还会发现有一个temp文件夹,其中的输出是临时存储的。

2 个答案:

答案 0 :(得分:0)

使用actionButton()怎么样? https://shiny.rstudio.com/reference/shiny/1.0.1/actionButton.html

您可以将actionButton(inputId = "IDForActionButton")放在ui.R中。 actionButton()在UI上创建一个按钮。 按下按钮后,将触发重新计算server.R代码,其中包括input$IDForActionButton

如链接所示,您必须将input$id用isolate()括起来。 因为,如果不这样做,则每次更改输入$ id的内容时,都会触发重新计算server.R代码,其中包括input$id

可能使用池库将为您提供帮助。 https://shiny.rstudio.com/articles/pool-basics.html

答案 1 :(得分:0)

像下面的基本代码一样,将数据框插入数据库。

library(shiny)
library(DBI)
library(pool)
pool <- dbPool(drv = RMySQL::MySQL(),dbname = "db_name",host = "host",username = "user_name",password = "password", port = 3306)

ui <- fluidPage(
  submitButton("submit")
)
server <- function(input, output){
  dbWriteTable(pool, "dummyTable", df, append = TRUE) #this will insert the entire dataframe at once into dummyTable
}

shinyApp(ui, server)

要继续使用此方法,您需要将所有值构成一个数据框。当您提交按钮时,数据框将被插入表中。 (除非重复,否则请勿发布用户凭据)