r语言 - 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)
})

返回以下错误。

警告:中的错误:无法准备查询:错误:语法错误在"'从 BHAVCOPY 中选择 *",其中"时间戳"介于 '" 之间 第 1 行:"从 BHAVCOPY 中选择 *,其中"时间戳"在 '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,'从 bhavcopy 中选择 *",其中"时间戳"介于 '2020' 之间(中出现意外的数字常量

在PostgreSQL管理器中使用此查询(从bhavcopy中选择*,其中"时间戳"介于"2020-06-11"和"2020-07-04"之间,并且"符号"="HDFCLIFE"(返回正确的结果。

我无法捕获特定错误并纠正它。谁能帮忙?

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

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)
})

我无法测试它,但也许您还必须省略input$startinput$end周围的单引号。

最新更新