使用 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 中提取外键的系统表

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

从R中的原始文件中提取数据

如何在 T-SQL 查询中针对连接到 SAP-HANA 的链接服务器使用“占位符”?

HANA SQL 从一个表中找到的多个表中选择计数 (*)

将R链接到HANA时如何在SQL查询中选择全部或部分向量