【问题标题】:Read a View created from a procedure in SAP HANA from R从 R 中读取从 SAP HANA 中的过程创建的视图
【发布时间】:2018-05-11 14:26:53
【问题描述】:

我在 SAP HANA 中有名为 "HYZ_ProcurementToSales" 的架构和视图 "V_HYZ_P25_Market_Market_Orders",它是从一个过程创建的,我试图在R 服务器版本 1.0.153。我使用的代码是:

library(RJDBC)
conn_server <- dbConnect(jdbcDriver,
"jdbc:sap:rdkom12.dhcp.pal.sap.corp:30015", "system",
"manager")
res <- dbGetQuery(conn,"select * from 
HYZ_ProcurementToSales.V_HYZ_P25_Market_Market_Orders")

我得到的错误是这样的:

"Unable to retrieve JDBC result set for 
select * from HYZ_ProcurementToSales.V_HYZ_P25_Market_Market_Orders".

我的信念是,用其他东西代替 dbGetQuery 可以解决问题。如果我只是这样做,效果很好

res <- dbGetQuery(conn,"select * from Tables")

【问题讨论】:

  • 请同时添加您的程序代码,以便我们了解读取数据的选项。
  • @LarsBr.,我已经更新了代码,我的目标是从视图中创建一个数据框。
  • @LarsBr.,当我使用 res 变量运行倒数第二个命令时出现的错误是“无法检索 select * Schema.View_Name 的 JDBC 结果集。
  • @LarsBr.,请提出一些可能的方法,因为我已按照您的建议更新了帖子。

标签: r jdbc hana dbconnection rjdbc


【解决方案1】:

以下内容在 HANA 1 SPS12 上适用于我,其过程公开了一个名为 V_CURRENTUSERS 的视图:

library(RJDBC)
drv <- JDBC("com.sap.db.jdbc.Driver",
            "C:\\Program Files\\SAP\\hdbclient\\ngdbc.jar",
            identifier.quote='"')
conn <- dbConnect(drv, "jdbc:sap://<hanaserver>:3<instance>15/?", "**username**", "*pw*")

jusers <- dbFetch(dbSendQuery(conn = conn, statement = 'select * from v_currentusers;'))

此时,整个结果集绑定到jusers。 完成后,您应该再次发布结果集:

dbClearResult(jusers)

最后关闭连接

dbDisconnect(conn)

请注意,带有结果视图的过程已被弃用,不应再使用/开发。相反,请使用表函数,因为这些函数也可以在信息视图中重复使用并允许动态参数分配。

【讨论】:

  • 在 jusers 语句中,如果视图 v_currentusers 属于一个模式,如何在视图中提及模式名称。我仍然收到错误消息,“无法找到用于签名的函数 'dbSendQuery' 的继承方法”。请帮忙。
  • 此错误与架构无关。要指定架构,请使用标准符号,例如'select * from "DEVDUDE"."V_CURRENTUSERS";'。您面临的错误似乎与RJDBC 的安装和依赖包有关。你确定它们都安装正确了吗?
  • 老实说,我正在尝试这个命令,但不要不知道这里有什么问题,包在这里安装正确。其实我是在使用 windows VM 的 citrix 环境中。
  • 嗯,这与您现在的问题中的错误不同,不是吗?您能否发布当前代码和所有当前输出?另外,您可以验证您正在使用的 R 版本吗?我使用 R 版本 3.3.1 进行了测试。输入version 并将输出包含在您的问题中。
  • 上面的代码绝对正确,我这里使用的是R studio server version 1.0.153。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多