使用 R 从 HANA 中提取表
Posted
技术标签:
【中文标题】使用 R 从 HANA 中提取表【英文标题】:Extracting Table from HANA using R 【发布时间】:2017-01-26 14:22:20 【问题描述】:这是我要抢的桌子。但是,从我的 HANA 数据库中,我不断收到以下错误。我知道该表存在,因为我已从 Qlikview 中将其拉入。
从 Qlikview 我使用以下语法拉入表格
"_MY_SCHEMA_"."My.Table.Name/Table_ONE"
当我尝试在 R 中做同样的事情时,我使用以下内容来抓取同一张表
mydate <- sqlFetch(myconn, "_MY_SCHEMA.My.Table.Name/Table_ONE")
这是我得到的错误
Error in odbcTableExists(channel, sqtable)
: table not found on channel
【问题讨论】:
Qlikview 语法中的句点周围有引号,但在使用sqlFetch
时没有。您可能需要添加转义引号或尝试使用简单名称的其他表来确认连接。
【参考方案1】:
此问题是由 STRINGS 封装在引号中的方式引起的。在这种情况下,这发生在两个层面:
-
R命令参数(sqlFetch(connection-object-parameter, sql-string-parameter)
需要表名文字字符串的HANA SQL
您在两个步骤中都使用了双引号封装。在这两个步骤中的每一步中,字符串都是从您使用的参数中提取的,其中包括删除最外层的封装标记,即此处的双引号。 因此,在第 1 步之后,双引号消失了,HANA 收到一个没有它们的字符串。 这没关系,只要您实际上并不 要求 标识符的双引号,但在您的示例中,您实际上是这样做的。 (带有 / 或 . 等特殊字符的区分大小写的标识符需要双引号)。
解决这个问题的方法相当简单:R 允许使用单引号 (') 和双引号 (") 来封装字符串。 只需在R中使用单引号将字符串交出即可:
mydate <- sqlFetch(myconn, '_MY_SCHEMA."My.Table.Name/Table_ONE"')
注意:您仍然必须将“My.Table.Name/Table_ONE”封装在双引号中,以便 HANA 正确处理此标识符。
对于 R 到 HANA 的连接,还有一些博客:
HANA quick note checking my connections ... HANA meets R【讨论】:
以上是关于使用 R 从 HANA 中提取表的主要内容,如果未能解决你的问题,请参考以下文章
如何从 SAP HANA Studio 在 SAP HANA Vora 虚拟表中插入数据?