使用R从Hana数据库查询数据,处理引号

时间:2015-12-09 18:27:15

标签: sql r rodbc hana

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

这个SQL适用于Hana:

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

当我尝试使用相同的代码从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语法错误:不正确   语法附近\&#34; SELECT COUNT()FROM ... [2]&#34; [RODBC]错误:无法   SQLExecDirect&#39;&#39; SELECT COUNT()FROM P30。\&#34; / BBB / BBB \&#34;&#39;&#39;&#34;

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

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

1 个答案:

答案 0 :(得分: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"')
相关问题