如何从 postgresql 数据库中提取数据到我的 shinyapps.io

How to pull data from postgresql database to my shinyapps.io

shiny apps.io 中的 shiny 应用程序可以链接到我的 postgresql 数据库吗?我试过了,但它给了我错误,这是我的代码,它可以离线工作,但我无法以闪亮的方式启动它 apps.io

这是错误

DONE Uploading application bundle...DONE Deploying application: 42170... Waiting for task: 32473560 error: Parsing manifest

############################ Begin Log ################################## ############################# End Log ################################### Error: Unhandled Exception: Child Task 32473561 failed: Error parsing manifest: Unsupported locale:

4409_4409.UTF-8

我的短版 server.r

library(e1071)
library(cluster)
set.seed(123)
shinyServer(function(input, output) {

  library("RPostgreSQL")
  drv <- dbDriver("PostgreSQL")
  con <- dbConnect(drv, host='localhost', port='5432', dbname='TESTDB',
                   user='postgres', password='root')
  rk <- dbSendQuery(con,"select * from persons")
  rs<-fetch(rk)

  radioValues <- reactive({
    gender <- input$gender
    if (gender==1){
      rs[rs$gender=="male",]
    } else if (gender==2){
      rs[rs$gender=="female",]
    } else if (gender==3){
      rs
    }

  })

  selectedData <- reactive({
    radioValues()[,input$show_vars, drop = FALSE]

  })
   output$mytable = renderDataTable({
   selectedData()
  })


  dbDisconnect(con)  
})

ui.r

library(shiny)
palette(c("#E41A1C", "#377EB8", "#4DAF4A", "#984EA3",
          "#FF7F00", "#FFFF33", "#A65628", "#F781BF", "#999999"))

library("RPostgreSQL")
drv <- dbDriver("PostgreSQL")
con <- dbConnect(drv, host='localhost', port='5432', dbname='TESTDB',
                 user='postgres', password='root')
rk <- dbSendQuery(con,"select * from persons")
rs<-fetch(rk)

shinyUI(pageWithSidebar(
  headerPanel(h1("Clustering Process Dashboard",style='font-family:"Times New Roman", Times, serif')),
  sidebarPanel(
    checkboxGroupInput('show_vars', 'Select Big 5 features',names(rs)[c(-1,-2)], selected = names(rs)[c(-1,-2,-3,-9)]),
  ),
  mainPanel(

    tabsetPanel(
      tabPanel("Table", dataTableOutput('mytable'))
  )
  )
)
)
dbDisconnect(con) 

请注意,我没有 post 我的完整代码,我只是 post 有关该问题的代码。这是我的最后一年项目,所以如果你想要我的完整代码,请联系我。我希望你能理解我对此的担忧。因此,如果您在此代码中的任何地方发现错误,我提前致歉。

是的,这是可能的。我有一个具有此配置的应用程序(托管在来自 Postgresql 数据库的 shinyapps.io 和 saving/pulling 数据上)。

但是,在您指定的当前配置下,它不起作用。原因如下:您 运行 在自己的个人计算机 (host=localhost) 上安装了 postgresql 服务器。当您 运行 您正在开发的应用程序(在 R Studio 中?)时,它可以正常工作,因为 R studio 中内置的本地 shinyapps 服务器也在您的本地计算机上 运行ning。当您将应用程序部署到 shinyapps.io 时,您的数据库连接字符串仍然指定 host="localhost" -- 但是当它在线部署时,localhost 指的是 shinyapps.io 上的本地服务器;并且该服务器未 运行 连接您的 Postgresql 数据库。因此,您会遇到错误。

要使其正常工作并按照您指定的方式连接到 "my postgresql database",您需要将主机从 "localhost" 更改为您的个人 IP 地址。这也意味着你需要让你的本地机器对互联网开放,以及你 运行ning postgresql 所在的端口。如果是个人互联网设置,您可以通过配置路由器来完成此操作。这不是一个理想的解决方案,原因有很多,其中最重要的是您在 shinyapps.io 上的应用程序只能在您的本地计算机处于 运行ning 并以指定的 IP 地址连接到互联网时才能运行。

更好的解决方案是设置基于云的 Postgresql 托管解决方案。许多公司提供这项服务(通常是收费的)。 Amazon Web Services 为小型数据库提供 12 个月的介绍性免费解决方案。这是帮助页面的 link,您还可以从中探索他们的服务:http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_ConnectToPostgreSQLInstance.html

有相当多的 setup/registration 步骤,但单击菜单并快速启动和 运行ning 实例也很容易。在云上拥有实例后,您需要将数据库连接信息更新到云。从那里,您的 shinyapps.io 实例可以在其在线服务器和在线数据库云服务器之间进行可靠通信。然后,当您对应用程序和数据库进行更改时,您需要双重部署更新:对 shinyapps.io 进行一次更新部署,并在需要时对数据库实例进行更新。请注意保护在 either/or 本地计算机上输入的数据,而不是通过将数据保存到云服务器的已部署应用程序输入的数据。