我想将我的应用程序输出插入到我的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文件夹,其中的输出是临时存储的。
答案 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)
要继续使用此方法,您需要将所有值构成一个数据框。当您提交按钮时,数据框将被插入表中。 (除非重复,否则请勿发布用户凭据)