用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 数据库中选择

使用 SQL Hana 对数据进行分组

如何从 SAP HANA Studio 在 SAP HANA Vora 虚拟表中插入数据?

sql要查找的数据中有双引号咋办?

使用 R 从 HANA 中提取表