R Shiny: возможно ли создать приложение Shiny, где пользователь может выбирать переменные SQL «s, где условие» и экспортировать результаты запроса - PullRequest
0 голосов
/ 07 марта 2019

Как я могу сделать следующее в Shiny (или это возможно).Я хотел бы иметь пользовательский интерфейс, где пользователь может выбрать, что он хочет передать в SQL: s "where-condition".Затем пользователь может нажать кнопку «Выполнить» и результаты запроса будут экспортированы в его папку.

Например, у меня есть предложение sql: select * from Animaldata, где animal_type in ('Cat')

Теперь я хотел бы иметь пользовательский интерфейс, в котором пользователь может просто выбрать, что поместить в условие where.Таким образом он видит варианты «Собака», «Кошка» и может выбрать те, которые он хочет.Например, пользователь выбирает только «Собака» и нажимает «Выполнить», а затем мы автоматически экспортируем результаты запроса в указанную папку.

1 Ответ

0 голосов
/ 07 марта 2019

Это очень возможно (я делал это во многих приложениях). На ваш вопрос сложно ответить, так как это не конкретный вопрос кодирования. Кроме того, вы не указали, какое приложение базы данных вы используете, поэтому сложно посоветовать что-либо, связанное с драйверами R. Обычно используйте драйвер, совместимый с DBI, и настоятельно рекомендуем передавать пользовательский ввод в виде списка параметров (для защиты от атак с использованием SQL-инъекций).

library(your DBI compliant package)

selections <- input$my_selections #input from shiny
selections <- as.vector(selections) #here may encounter driver/database compliance issues as you may or may not be able to pass-in a vector/array object.  If not you can pass-in a string and split it on the database end
selections <- paste0(as.vector(selections),collapse=",") #alternative input

conn <- #your connection to the database
result <- dbGetQuery(conn,"select * from Animaldata where animal_type in ( $1 )",
                     params=list(selections))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...