使用R从HANA中提取表

时间:2017-01-26 14:22:20

标签: r hana rodbc

这是我试图抓住的表格。从我的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

1 个答案:

答案 0 :(得分:0)

此问题是由STRINGS封装在引号中的方式引起的。在这种情况下,这发生在两个层面:

  1. R命令参数(sqlFetch(connection-object-parameter,sql-string-parameter)
  2. HANA SQL,其中需要表名的文字字符串
  3. 您对两个步骤都使用了双引号封装。在这两个步骤的每一步中,字符串都是从您使用的参数中提取的,其中包括删除最外面的封装标记,这些标记在这里是双引号。 因此,在第1步之后,双引号就会消失,而HANA会收到没有它们的字符串 这是可以的,只要您实际上不需要标识符的双引号,但在您的示例中实际上是这样做的。 (具有特殊字符的区分大小写的标识符,如/或。需要双引号)。

    对此的解决方案相当简单:R允许单引号(&#39;)和双引号(&#34;)用于字符串封装。
    只需在R中使用单引号来移交字符串:

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

    注意:你仍然需要封装&#34; My.Table.Name/Table_ONE"使用双引号,以便HANA正确处理此标识符。

    对于连接R到HANA,还有几个博客: