Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将数据从SQL Server导入到应用程序_R_Shiny_Rodbc - Fatal编程技术网

将数据从SQL Server导入到应用程序

将数据从SQL Server导入到应用程序,r,shiny,rodbc,R,Shiny,Rodbc,我在R中使用RODBC处理SQL Server中的数据,在获得结果后,我创建了ShinyApp以部署结果,但我想直接从SQL查询中获取数据,而无需将结果导出到Excel,然后将其导入到shiny,我该怎么做 Test <- odbcDriverConnect("driver={SQL Server};server=localhost;database=Fakahany;trusted_connection=true") Orders<- sqlQuery(Test," SELECT

我在R中使用RODBC处理SQL Server中的数据,在获得结果后,我创建了ShinyApp以部署结果,但我想直接从SQL查询中获取数据,而无需将结果导出到Excel,然后将其导入到shiny,我该怎么做

Test <- odbcDriverConnect("driver={SQL Server};server=localhost;database=Fakahany;trusted_connection=true")
Orders<- sqlQuery(Test,"
SELECT
  WHWorkOrderHeaderId
, OtherLangDescription
FROM   Warehouse.WHWorkOrderDetails 
   INNER JOIN Warehouse.WHWorkOrderHeader AS WHH
      ON Warehouse.WHWorkOrderDetails.WHWorkOrderHeaderId = WHH.ID 
  INNER JOIN Warehouse.StockItems 
     ON Warehouse.WHWorkOrderDetails.StockItemId = Warehouse.StockItems.Id 
WHERE Type = 'IO'
ORDER BY OtherLangDescription ASC")
#Creating the correlations 
Orders$OtherLangDescription <- as.factor(Orders$OtherLangDescription)
orderList <- unique(Orders$OtherLangDescription) 
ListId <- lapply(orderList, function(x) subset(Orders, OtherLangDescription == x)$WHWorkOrderHeaderId) 
Initial_Tab <- lapply(ListId, function(x) subset(Orders, WHWorkOrderHeaderId %in% x)$OtherLangDescription) 
Correlation_Tab <- mapply(function(Product, ID) table(Product)/length(ID),
                        Initial_Tab, ListId) 
colnames(Correlation_Tab) <- orderList
cor_per<- round(Correlation_Tab*100,2)
DF<-data.frame(row=rownames(cor_per)[row(cor_per)], col=colnames(cor_per)[col(cor_per)], corr=c(cor_per))

Test这应该是您想要的

library(RODBCext)
library(shiny)

ui <- shinyUI(

  pageWithSidebar(

    headerPanel("Hide Side Bar example"),
    sidebarPanel(
      textInput("CATEGORY", "Enter CATEGORY below"),
      submitButton(text="Submit")
    ),
    mainPanel(
      tabsetPanel(
        tabPanel("Data", tableOutput("tbTable"))
      )

    )
  )
)

server <- function(input, output, session)    
{ # NOTE THE BRACE HERE
  myData <- reactive({
    req(input$CATEGORY)

    #connect to database 
    dbhandle = odbcDriverConnect('driver={SQL Server};server=Server_Name;database=Database_Name;trusted_connection=true')

    #build query
    query = "SELECT * FROM [Your_Table] where [CATEGORY] = ?"

    #store results
    res <- sqlExecute(channel = dbhandle, 
                      query = query,
                      data = list(input$CATEGORY),
                      fetch = TRUE,
                      stringsAsFactors = FALSE) 

    #close the connection
    odbcClose(dbhandle)
    #return results
    res
  })

  output$tbTable <- 
    renderTable(myData())

} # AND NOTE THE CLOSING BRACE HERE

shinyApp(ui = ui, server = server)
库(RODBEXT)
图书馆(闪亮)

ui我不明白“将结果导出到Excel”是什么意思,我看不到任何导出到Excel的内容。对此有不同的解决方案。但是我们需要知道你的问题到底出在哪里。当我使用sql连接发布我的应用程序时,我遇到了这个错误(出现了一个错误,应用程序无法启动)。但是当我从Rstudio运行应用程序时,它可以正常工作,所以为了解决这个问题,我将结果从sql导出到excel,然后将此excel导入我的应用程序。
library(RODBCext)
library(shiny)

ui <- shinyUI(

  pageWithSidebar(

    headerPanel("Hide Side Bar example"),
    sidebarPanel(
      textInput("CATEGORY", "Enter CATEGORY below"),
      submitButton(text="Submit")
    ),
    mainPanel(
      tabsetPanel(
        tabPanel("Data", tableOutput("tbTable"))
      )

    )
  )
)

server <- function(input, output, session)    
{ # NOTE THE BRACE HERE
  myData <- reactive({
    req(input$CATEGORY)

    #connect to database 
    dbhandle = odbcDriverConnect('driver={SQL Server};server=Server_Name;database=Database_Name;trusted_connection=true')

    #build query
    query = "SELECT * FROM [Your_Table] where [CATEGORY] = ?"

    #store results
    res <- sqlExecute(channel = dbhandle, 
                      query = query,
                      data = list(input$CATEGORY),
                      fetch = TRUE,
                      stringsAsFactors = FALSE) 

    #close the connection
    odbcClose(dbhandle)
    #return results
    res
  })

  output$tbTable <- 
    renderTable(myData())

} # AND NOTE THE CLOSING BRACE HERE

shinyApp(ui = ui, server = server)
library(shiny)
library(RODBCext)

shinyApp(
  ui = 
    shinyUI(
      fluidPage(
        uiOutput("select_category"),
        tableOutput("display_data")
      #   plotOutput("plot_data")
      )
    ),

  # server needs the function; looks ok
  server = shinyServer(function(input, output, session)
    {
    # A reactive object to get the query. This lets you use
    # the data in multiple locations (plots, tables, etc) without
    # having to perform the query in each output slot.
    QueriedData <- reactive({
        req(input$showDrop)
        ch <- odbcDriverConnect("driver={SQL Server};server=Server_Name;database=DATABASE_NAME;trusted_connection=true")
        showList <- sqlExecute(ch, "SELECT * FROM [Your_Table] WHERE Category = ?",
                               data = list(Category = input$showDrop),
                               fetch = TRUE,
                               stringsAsFactors = FALSE)
        odbcClose(ch)
        showList
      })

    # The select input control.  These can be managed dynamically 
    # from the server, and then the control send back to the UI
    # using `renderUI`
     output$select_category <- renderUI({
         ch <- odbcDriverConnect("driver={SQL Server};server=Server_Name;database=DATABASE_NAME;trusted_connection=true")
         showList <- sqlExecute(ch, "Select Distinct Category From [Your_Table] Order by Category", 
                                fetch = TRUE,
                                stringsAsFactors = FALSE)
         odbcClose(ch)
         selectInput(inputId = "showDrop",
                     label = "Select Asset",
                     showList$Category)
       })

    # Display the data in a table
    output$display_data <- renderTable({
        QueriedData()
      })

    # Display a plot
    # output$plot_data <- 
    #  renderPlot({
    #    plot(QueriedData()) # fill in the plot code you want to use.
    #  })

  })
)