首先,我需要使用 R 从 HANA 数据库中获取 SQL 查询结果,我通过在 Rstudio 中使用 RODBC 来完成。
其次,我需要与其他人分享我的代码,我使用 shinyapps.io 来完成。
但是,我需要使用 shinyapps 在其他计算机上显示我的 SQL 查询结果,我有以下错误消息:
error first argument is not an open rodbc channel
我使用了来自R shiny RODBC connection Failing的答案,但它仍然无法正常工作。
这是我附加的 ui.R 和 sever.R 代码:
ui.R:
library(dplyr)
library(RODBC)
library(stringr)
library(ggplot2)
fluidPage(
titlePanel("Basic DataTable"),
fluidRow(
DT::dataTableOutput("table")
)
)
服务器.R:
library(dplyr)
library(RODBC)
library(stringr)
library(ggplot2)
ch<-odbcConnect('HANARB1P',uid='****',pwd='****')
options(scipen = 200)
myOffice <- 0
StartDate <- 20170601
EndDate <- 20170610
office_clause = ""
if (myOffice != 0) {
office_clause = paste(
'AND "_outer"."/BIC/ZSALE_OFF" IN (',paste(myOffice, collapse=", "),')'
)
}
function(input, output) {
output$table <- DT::renderDataTable(DT::datatable({
data <- sqlQuery(channel=ch,query=paste(' SELECT TOP 100
"/BIC/ZSALE_OFF" AS "SalesOffice",
"/BIC/ZHASHPAN" AS "CreditCard"
FROM "SAPB1P"."/BIC/AZ_RT_A212"
WHERE "CALDAY" BETWEEN',StartDate,'AND',EndDate,'
',office_clause,'
'))
data
}))
}
如何使用shinyapps.io和RODBC在网页上展示SQL查询结果进行分享?
根据答案,我稍微修改了我的代码。但是奇怪的事情又发生了。当我使用代码时:
function(input, output) {
output$table <- DT::renderDataTable(DT::datatable({
data <- sqlQuery(channel=ch,query=paste(' SELECT TOP 50
"/BIC/ZSALE_OFF" AS "SalesOffice",
"/BIC/ZHASHPAN" AS "CreditCard"
FROM "SAPB1P"."/BIC/AZ_RT_A212"
WHERE "CALDAY" BETWEEN',StartDate,'AND',EndDate,'
',office_clause,'
'))
data
}))
}
我有错误信息:
当我使用代码时:
shinyServer(
function(input, output) {
data <- sqlQuery(channel=ch,query=paste(' SELECT TOP 50
"/BIC/ZSALE_OFF" AS "SalesOffice",
"/BIC/ZHASHPAN" AS "CreditCard"
FROM "SAPB1P"."/BIC/AZ_RT_A212"
WHERE "CALDAY" BETWEEN',StartDate,'AND',EndDate,'
',office_clause,'
'))
output$table <- DT::renderDataTable(data)
}
)
我有错误信息:
我确信该频道有效。如果我只是使用 run app 来执行此操作:
shiny::runApp('//paper/fchen4/feng.officeworks/mycode/myShiny')
它工作正常。但是我在一家公司工作,我不知道我的防火墙是否与这个错误有关。但是如果我这里不使用SQL,也可以。