【问题标题】:R SAP Hana Integration with ODBC for WindowsR SAP Hana 与 Windows 的 ODBC 集成
【发布时间】:2021-01-15 03:43:16
【问题描述】:

我想从 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 时的截图:

错误:

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>"))

版本:

窗户:

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        
> 

【问题讨论】:

    标签: r odbc hana rjdbc


    【解决方案1】:

    在您尝试不使用 DSN 时,缺少参数 ServerNode;你改用了HOST,这不是同一个参数。

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

    【讨论】:

    • 非常感谢 Lars .. 那行得通,我不知道我可以在 DBI 中提供 ServerNode 作为参数。使用 ODBC 检索时间为 2.11 分钟,而 JDBC 检索时间为 10.x 分钟,我的案例有 130 万条记录和 6 列。
    【解决方案2】:

    请试试这个

    主机名作为您的主机链接

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

    这会起作用....!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-06
      相关资源
      最近更新 更多