Windows 的 R SAP Hana 与 ODBC 集成
R SAP Hana Integration with ODBC for Windows
我想从 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"
>
下图是我在配置 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")
我想从 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"
>
下图是我在配置 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")