当我从R中的HANA运行sql查询并提取所有列时,数据会正确返回。
sql <- "SELECT TOP 10 *
FROM "ccf-edw.self-service.DOIP::R_CA_B_DemandPlan"(
'PLACEHOLDER' = ('$$IP_ExtractionWeekFrom$$', '201943'),
'PLACEHOLDER' = ('$$IP_ExtractionWeekTo$$', '201943')) "
SpringVisitAll <- dbGetQuery(jdbcConnection, sql)
这为我提供了具有实际数据的列。
但是,如果我尝试只调用几个列,则数据只填充列名
sql <- "SELECT TOP 10 'SalesOffice', 'CalendarMonth'
FROM "ccf-edw.self-service.DOIP::R_CA_B_DemandPlan"(
'PLACEHOLDER' = ('$$IP_ExtractionWeekFrom$$', '201943'),
'PLACEHOLDER' = ('$$IP_ExtractionWeekTo$$', '201943')) "
SpringVisitAll <- dbGetQuery(jdbcConnection, sql)
提供两列,其中每列的内容都向下读取SalesOffice和CalendarMonth。
这是怎么回事?
基于SAP HANA 的命名惯例
名称不区分大小写。例如,CUSTOMER和CUSTOMER是相同的,但对象名称存储在SAP HANA数据库中时会转换为大写。但是,如果将名称用引号括起来,则区分大小写。
因此,根据您在CREATE TABLE
语句中定义列的方式(带引号或不带引号(,您有两个引用它们的选项
未引用的列名-不区分大小写
简单地写没有分隔符的列名:
sql <- "SELECT TOP 10 SalesOffice , CalendarMonth ...
双引号列名-区分大小写
列名必须用双引号括起来。此外,在双引号R
字符串中,必须使用"
转义双引号
sql <- "SELECT TOP 10 "SalesOffice" , "CalendarMonth" ...