Shiny Dashboard - использование загруженной таблицы в функции SQL-запроса - PullRequest
0 голосов
/ 26 ноября 2018

Возникла проблема с моей блестящей приборной панелью.Пользователь может загрузить файл .csv, первый столбец, содержащий термины, которые он будет искать, в базе данных, к которой подключается панель мониторинга.

Таблица передается функции, которая будет выполнять запрос, но она не выглядитчтобы правильно прочитать колонку.

Вот мой код.Это было изменено здесь для создания таблицы, а не поиска в качестве примера.Этот код не возвращает строк в созданной таблице.

dataTable <- reactive({
  if(is.null(input$uploadBox)){
    return(NULL)
  } else {
    dataTbl <- read.csv(input$uploadBox$datapath, stringsAsFactors = FALSE)

    return(as.data.table(dataTbl))
  }
})


searchFunc <- eventReactive(input$uploadButton, {
   source(paste0(currPath, "/pgm/dbConnection.r"))

   sqlSearch(dataTable())
})


sqlSearch <- function(data){
  sqlQuery(conn, stri_paste("drop table if exists ",my521,"_upload_search_names;"))
  sqlQuery(conn, stri_paste("create table if not exists ",my521,"_upload_search_names
                        (search_name varchar)
                        stored as parquet
                        ;"))

  for(i in 1:nrow(data)){
    sqlQuery(conn, stri_paste("insert into ",my521,"_upload_search_names
                               select
                               ",data[i,1],"
                               ;"))
  }
}

Я также попытался изменить первый столбец на строку с

searchVar <- toString(sprintf("'%s'", data[,1]))

и изменить for (i in 1: nrow(data)) по длине (searchVar) и цикл с searchVar [i], но все, что он делает, это вставляет одну строку, содержащую "c ('item1', 'item2', 'item3', ... 'item33')"

Я в растерянности, как использовать таблицу данных, загруженную в функцию, которая запрашивает базу данных.Когда я использую тестовый файл у меня на сервере Shiny и запускаю функции sql вручную, все работает отлично.Поэтому я думаю, что это связано с тем, как таблица данных передается в функцию.

Спасибо за любую помощь.

...