【问题标题】:Query data from Hana database with R, dealing with quotes用R从Hana数据库查询数据,处理引号
【发布时间】:2015-12-09 18:27:14
【问题描述】:

我使用R 从 Hana 数据库中读取数据。一些表名包含反斜杠,这迫使我使用引号。我无法使用R 阅读这些表格。让我给你举个例子……

此 SQL 在 Hana 中有效:

SELECT COUNT(*) FROM P3O."/BBB/BBB";

当我尝试使用相同的代码通过 R 从 Hana 数据库中读取数据时,出现以下错误:

library("RODBC") 
channel <- odbcConnect("xxx",uid="xxx",pwd="xxx") 
query <- 
paste("'","SELECT COUNT(*) FROM P30.", "\"/BBB/BBB\"","'",sep="")
RAW_dataHana   <- sqlQuery(channel, query)  
close(channel)

我收到以下错误:

语法错误或访问冲突;257 sql 语法错误:不正确 \"SELECT COUNT() FROM ... [2] "[RODBC] 错误:无法 SQLExecDirect ''SELECT COUNT() FROM P30.\"/BBB/BBB\"''"

我认为这与报价有关,但是当我用这个检查代码时,我认为我得到了正确的查询:

x = paste("'","SELECT COUNT(*) FROM P30.", "\"/BBB/BBB\"", "'",sep="")
cat(x) 
> cat(x)
'SELECT COUNT(*) FROM P30."/BBB/BBB"'

【问题讨论】:

    标签: sql r rodbc hana


    【解决方案1】:

    现在刚刚检查了我的 RODBC 测试代码... 处理引用的最简单方法是将查询字符串括在单引号中,例如:

    sales_fact<-sqlQuery (ch, 'SELECT TOP 200 "ORDERID", "VAR_INDICATOR",
                                            sum("ORDER_CNT") AS "ORDER_CNT",
                                            sum("VARIANCE") AS "VARIANCE",
                                            sum("VARIANCE_PCT") AS "VARIANCE_PCT",
                                            sum("BUDGET") AS "BUDGET",
                                            sum("ACTUAL") AS "ACTUAL"
                              FROM "_SYS_BIC"."test/ODERS_CV"
                              GROUP BY "ORDERID", "VAR_INDICATOR"')
    

    这也适用于 paste():

    queryText <- 'SELECT TOP 200 "ORDERID", "VAR_INDICATOR",
                                            sum("ORDER_CNT") AS "ORDER_CNT",...'
    
    queryText <- paste(sep = '', queryText, ' "_SYS_BIC"."test/ODERS_CV"
                              GROUP BY "ORDERID", "VAR_INDICATOR"')
    

    【讨论】:

      猜你喜欢
      • 2016-09-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-19
      • 2023-03-04
      • 2021-05-25
      相关资源
      最近更新 更多