我使用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"'
答案 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"')