使用 R 从 HANA 中提取 Table

Extracting Table from HANA using R

这就是我要抢的table。然而,从我的 HANA 数据库中,我不断收到以下错误。我知道 table 存在,因为我已经从 Qlikview 中提取了它。

我使用以下语法从 Qlikview 中拉入 table

"_MY_SCHEMA_"."My.Table.Name/Table_ONE"

当我尝试在 R 中做同样的事情时,我使用以下方法来获取相同的 table

mydate <- sqlFetch(myconn, "_MY_SCHEMA.My.Table.Name/Table_ONE")

这是我得到的错误

Error in odbcTableExists(channel, sqtable)
: table not found on channel

这个问题是由于STRINGS用引号括起来的方式引起的。在这种情况下,这发生在两个级别:

  1. R命令参数(sqlFetch(connection-object-parameter,sql-string-parameter)
  2. HANA SQL 其中 table 名称的文字字符串是必需的

您对这两个步骤都使用了 double-quotes 封装。在这两个步骤的每一步中,都会从您使用的参数中提取字符串,其中包括删除最外层的封装标记,即此处的 double-quotes 。 因此,在第 1 步之后,双引号消失了,HANA 收到了一个没有它们的字符串。
这没关系,只要您实际上不 需要 标识符的 double-quotes,但在您的示例中您确实需要。 (带有 / 或 . 等特殊字符的区分大小写的标识符需要双引号)。

解决这个问题的方法很简单:R 允许使用单引号 (') 和双引号 (") 来封装字符串。
R中用单引号交出字符串即可:

mydate <- sqlFetch(myconn, '_MY_SCHEMA."My.Table.Name/Table_ONE"')

注意:还是要把"My.Table.Name/Table_ONE"用双引号括起来,这样HANA才能正确处理这个标识符。

关于 R 到 HANA 的连接,还有一些博客: