Я хочу подключиться к базе данных SAP Hana из RStudio. Я протестировал несколько библиотек, таких как:
RODBC
RJDBC
И, наконец, после некоторых чтений и исследований я определил, что ODBC является более новой библиотекой вместо RODBC и имеет лучшую производительность по сравнению с RJDBC.
Я начал с документации RStudio:
1- Установка драйвера SAP HANA link
2- Введение RStudio в пакет ODBC ссылка
3- Страница пакета ODBC на GitHub, ссылка
После установки драйвера для 64-разрядной версии Windows я вижу драйвер HDBODBC
из RStudio:
> 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
>