Хранение данных блеска в mySql

0

Я хочу вставить свой вывод приложения в базу данных 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)

Здесь я могу вставить свои данные, используя запрос вставки, но когда у меня есть огромные выходные данные для вставки, в этом случае я не могу использовать запрос вставки снова и снова. Может ли кто-нибудь помочь мне, как я могу вставить свои данные. После поиска я также обнаружил, что есть временная папка, в которой выходные данные хранятся временно, если возможно, что я могу использовать временную папку для помещения данных в базу данных.

Теги:
shiny
amazon-rds
shiny-server

2 ответа

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)

Чтобы продолжить с этим методом, вам нужно объединить все значения в фрейм данных. Когда вы отправляете кнопку, фрейм данных будет вставлен в таблицу. (Не публикуйте учетные данные пользователя, если они не повторяются)

  • 0
    Спасибо за вашу поддержку. Но у меня есть одно сомнение: dummyTable - это таблица, которую я должен создать в моей базе данных, которая содержит только атрибуты с подходящими именами и типами данных? и просто чтобы быть уверенным, что df - это имя dataframe.
  • 0
    Описанный выше метод работает , если есть таблица в базе данных с именем dummyTable и вы хотите хранить dataframe df в базу данных. И df и dummyTable должны иметь одинаковые типы данных и поля.
Показать ещё 3 комментария
0

Как насчет использования actionButton()? https://shiny.rstudio.com/reference/shiny/1.0.1/actionButton.html

Вы можете поместить actionButton(inputId = "IDForActionButton") в ui.R. actionButton() создает кнопку в пользовательском интерфейсе. И когда кнопка нажата, это вызывает пересчет кодов server.R, которые включают input$IDForActionButton.

Вы должны заключить input$id с isolate(), как показано в ссылке. Поскольку без этого каждый раз при изменении содержимого входного $ id запускается пересчет кодов server.R, которые включают input$id.

Возможно, использование библиотеки пулов поможет вам. https://shiny.rstudio.com/articles/pool-basics.html

  • 0
    Спасибо за ваш ответ, но во втором случае он выполняет запрос выбора вручную, но на самом деле я хочу выполнить запрос вставки для большого количества атрибутов, чего я не могу сделать, добавив запрос вручную, как только будет нажата кнопка действия, он должен добавить все данные в таблице базы данных. Поправь меня, если я где-нибудь не прав.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню