使用 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用引号括起来的方式引起的。在这种情况下,这发生在两个级别:
- R命令参数(sqlFetch(connection-object-parameter,sql-string-parameter)
- 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 的连接,还有一些博客:
这就是我要抢的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用引号括起来的方式引起的。在这种情况下,这发生在两个级别:
- R命令参数(sqlFetch(connection-object-parameter,sql-string-parameter)
- 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 的连接,还有一些博客: