微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

R SAP Hana与Windows的ODBC集成

如何解决R SAP Hana与Windows的ODBC集成

我想从RStudio连接到SAP Hana数据库。 我已经测试了几个库,例如:

  • RODBC

  • RJDBC

最后,经过一些阅读和研究,我确定ODBC是较新的库,而不是RODBC,并且与RJDBC相比,它具有更好的性能

我已经开始使用RStudio文档:

1- SAP HANA驱动程序安装link

2- RStudio ODBC软件包link的介绍

3- ODBC程序包GitHub页面link

在为Windows 64位安装驱动程序之后,我可以从RStudio中看到驱动程序HDBODBC

> library(odbc)
> sort(unique(odbcListDrivers()[[1]]))
[1] "Amazon Redshift (x64)"  "HDBODBC"  "ODBC Driver 17 for sql Server"  "Postgresql ANSI(x64)"  "Postgresql Unicode(x64)"      
[6] "sql Server"                   
> 

下图是在配置提供IP和端口的DSN时的捕获:

enter image description here

enter image description here

错误

1-这是我尝试连接到DSN时得到的:

> library(odbc)
> con <- dbConnect(odbc(),"HAN")
Error: nanodbc/nanodbc.cpp:983: HY000: [SAP AG][LIBODBCHDB DLL][HDBODBC] General error;1033 error while parsing protocol 
> 

2-这是我尝试不使用DSN进行连接时得到的:

library(DBI)
con <- dbConnect(odbc::odbc(),driver = "HDBODBC",uid = "<user>",pwd = "<pass>",host = "<ip>",port = <port>)  

Error: nanodbc/nanodbc.cpp:983: HY000: [SAP AG][LIBODBCHDB DLL][HDBODBC] General error;-10719 Connect Failed (invalid SERVERNODE '')

其他故障排除信息:

我已经测试了连接,并且连接成功。

我在Tableau中使用了它,并且效果很好。

我还使用了RJDBC和Java驱动程序,它也可以正常工作,但是性能确实很差:

jdbcDriver <- JDBC(driverClass="com.sap.db.jdbc.Driver",classpath="C:\\Program Files\\SAP\\hdbclient\\ngdbc.jar")

jdbcConnection <- dbConnect(jdbcDriver,"jdbc:sap://<ip>:<port>/?autocommit=false","<username>",key_get("<service>",keyring = "<keyring>"))

版本:

Windows:

OS Name:                   Microsoft Windows 10 Enterprise
OS Version:                10.0.18363 N/A Build 18363
System Type:               x64-based PC

R:

> version
               _                           
platform       x86_64-w64-mingw32          
arch           x86_64                      
os             mingw32                     
system         x86_64,mingw32             
status                                     
major          3                           
minor          6.3                         
year           2020                        
month          02                          
day            29                          
svn rev        77875                       
language       R                           
version.string R version 3.6.3 (2020-02-29)
nickname       Holding the Windsock        
> 

解决方法

在尝试不使用DSN的情况下,缺少参数ServerNode的情况;您使用的是HOST,而不是相同的参数。

有关详细信息,请参见参考文档here

,

请尝试

主机名作为您的主机链接

enter image description here

conn<- dbConnect(odbc::odbc(),"HDODBC")

这将起作用....!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。