首页 > 解决方案 > RPostgreSQL 查询在 Shiny 服务器中不起作用

问题描述

我正在尝试从闪亮的应用程序中的 PostgreSQL 数据库中获取数据。查询不工作。运行以下

function(input, output) {
  data.df<- eventReactive(input$fetcher, {
    qry<-paste0("\'SELECT * FROM bhavcopy WHERE \"TIMESTAMP\" BETWEEN \'",input$start,"\' AND \'",input$end,"\' AND \"SYMBOL\"=\'",input$symbol,"\'\'")

    dbGetQuery(con,qry)
  })

返回以下错误。

警告:错误:无法准备查询:错误:在“'SELECT * FROM bhavcopy WHERE "TIMESTAMP" BETWEEN '" LINE 1: 'SELECT * FROM bhavcopy WHERE "TIMESTAMP" BETWEEN '2020-06-1 处或附近出现语法错误。 .. ^

当我使用查询(复制 cat(qry) 的结果)并运行以下查询时

dbGetQuery(con,'SELECT * FROM bhavcopy WHERE "TIMESTAMP" BETWEEN '2020-06-11' AND '2020-07-04' AND "SYMBOL"='HDFCLIFE'')

错误是

错误:“dbGetQuery(con,'SELECT * FROM bhavcopy WHERE "TIMESTAMP" BETWEEN '2020" 中出现意外的数字常量”

在 PostgreSQL 管理器中使用此查询(SELECT * FROM bhavcopy WHERE "TIMESTAMP" BETWEEN '2020-06-11' AND '2020-07-04' AND "SYMBOL"='HDFCLIFE')返回正确的结果。

我无法捕捉到特定错误并纠正它。任何人都可以帮忙吗?

标签: rshinyrpostgresql

解决方案


我认为您必须省略外部引号。尝试这个:

function(input, output) {
  data.df<- eventReactive(input$fetcher, {
    qry<-paste0("SELECT * FROM bhavcopy WHERE \"TIMESTAMP\" BETWEEN '", input$start, "' AND '", input$end, "' AND \"SYMBOL\"= '", input$symbol, "'")

    dbGetQuery(con,qry)
  })

我无法对其进行测试,但也许您还必须省略 and 周围的单input$start引号input$end


推荐阅读