Mysql 选择要进入的SQL列

Mysql 选择要进入的SQL列,mysql,r,shiny,rmysql,Mysql,R,Shiny,Rmysql,Shining和SQL server已链接。 我们成功地通过shiny的输入指定了搜索条件。 是否可以在shiny的输出中选择以这种方式获取的列名 用户界面 服务器.R shinyServer(功能(输入、输出){ observeEvent(输入$go{ 输出$table此答案涵盖您的第一次查询尝试: observeEvent(input$go,{ output$table <- renderTable({ sql <- 'SELECT ?select FRO

Shining和SQL server已链接。
我们成功地通过shiny的输入指定了搜索条件。
是否可以在shiny的输出中选择以这种方式获取的列名

用户界面 服务器.R
shinyServer(功能(输入、输出){
observeEvent(输入$go{

输出$table此答案涵盖您的第一次查询尝试:

observeEvent(input$go,{
    output$table <- renderTable({
        sql <- 'SELECT ?select FROM City;'
        query <- sqlInterpolate(pool, sql, select = input$select)
        dbGetQuery(pool, query)
    })
})

在这方面,在
global.R
中存储预烘焙的SQL语句或在
server.R
中存储源代码的外部文件是很常见的。虽然我不喜欢存储长的静态文本块,但这是最安全的选择。@并且请注意,数据库中准备的语句太多也可能会影响性能。@TimBiegeleisen Never已经到了我必须存储太多的地步。这是怎么回事?文本片段对于存储/检索afaik来说应该是非常轻量级的。我是否遗漏了什么?@anddt Prepared语句实际上不是在调用数据库的客户端中计算的,而是在数据库本身上计算的。数据库将在内存中保留Prepared语句,并且这样做可能会有开销。
shinyServer(function(input, output) {
  
  observeEvent(input$go,{
    output$table <- renderTable({
      sql <- 'SELECT ?select FROM City;'
      query <- sqlInterpolate(pool, sql, select = input$select)
      dbGetQuery(pool, query)
    })
  })
  
  output$tablee <- renderTable({
    sql <- "SELECT * FROM City WHERE ID = ?ID;"
    query <- sqlInterpolate(pool, sql, ID = input$ID)
    dbGetQuery(pool, query)
  })
  
})
library(shiny)
library(DBI)
library(pool)

pool <- dbPool(
  drv = RMySQL::MySQL(),
  dbname = "shinydemo",
  host = "shiny-demo.csa7qlmguqrf.us-east-1.rds.amazonaws.com",
  username = "guest",
  password = "guest"
)
observeEvent(input$go,{
    output$table <- renderTable({
        sql <- 'SELECT ?select FROM City;'
        query <- sqlInterpolate(pool, sql, select = input$select)
        dbGetQuery(pool, query)
    })
})
observeEvent(input$go,{
    output$table <- renderTable({
        sql <- paste("SELECT", input$select, "FROM City;")
        dbGetQuery(pool, sql)
    })
})
observeEvent(input$go,{
    output$table <- renderTable({
        sql1 <- "SELECT name FROM City;"
        sql2 <- "SELECT state FROM City;"
        query <- ifelse(input$select == "name", sql1, sql2)
        dbGetQuery(pool, query)
    })
})