用R从Hana数据库查询数据,处理引号
Posted
技术标签:
【中文标题】用R从Hana数据库查询数据,处理引号【英文标题】:Query data from Hana database with R, dealing with quotes 【发布时间】: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"'
【问题讨论】:
【参考方案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"')
【讨论】:
以上是关于用R从Hana数据库查询数据,处理引号的主要内容,如果未能解决你的问题,请参考以下文章
使用 R 中的 sqlQuery 处理 SQL select 语句中的双引号
通过带有参数的 JDBC 从 SAP HANA 数据库中选择