Windows 的 R SAP Hana 与 ODBC 集成

R SAP Hana Integration with ODBC for Windows

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

最后经过一些阅读和研究,我确定 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"                   
> 

下图是我在配置 DSN 时的截图,我提供了 IP 和端口:

错误:

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

请试试这个 主机名作为您的主机 Link

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