2017-02-10 31 views
-1

В настоящее время я использую пакет RODBC в R для запуска запросов к базам данных SQL Server. В настоящее время Knitr имеет возможность использовать SQL code chunks (используя DBI package). Я хотел бы воспользоваться этим, так как он позволяет мне иметь чистый SQL, встроенный в мой RMarkDocument (RMD). Тем не менее, я столкнулся с трудностями при подключении DBI к моей среде SQL Server.Как подключить пакет R DBI к SQL Server?

Я просмотрел файл справки DBI и виньетки, но я в недоумении. Они упоминают RSQLServer для SQL Server, но он был извлечен из CRAN. Я знаю, что могу установить его из gitHub, используя devtools, но я бы предпочел не полагаться на пакеты, которые не могут быть сохранены на CRAN. Я также предпочел бы избежать разъема RJDBC, поскольку я слышал о проблемах надежности, и это делает код менее переносимым.

Хотя моя цель - использовать это в файлах RMD, приведенный ниже код является простым R-скриптом, чтобы максимально упростить пример.

Кто-нибудь знает, как получить пример DBI, работающий аналогично примеру RODBC?

# *** Query - edit table name to work with your db 
my_query = "select top 100 * from my_table" 

# *** This code works *** 
library(RODBC) 
# Replace <<SERVER>> and <<DB>> with your server and database, respectively 
SQLServer <- odbcDriverConnect(connection = "Driver={SQL Server};server=<<SERVER>>;database=<<DB>>;trusted_connection=yes") 
sqlResult <- sqlQuery(SQLServer, my_query) 


# *** This code doesn't *** 
library(DBI) 
# Replace <<SERVER>> and <<DB>> with your server and database, respectively 
SQLServer <- dbConnect(dbDriver("ODBC"), "server=<<SERVER>>;database=<<DB>>;trusted_connection=yes") 
sqlResult <- dbSendQuery(con, my_query) 
+0

Я редактировал вопрос дают ясную постановку проблемы в самом вопросе наряду с воспроизводимым примером. Может ли кто-нибудь просмотреть обзор для повторного открытия? –

+1

Возможно, вы захотите прочитать следующее: https://github.com/rstats-db/odbc – p0bs

ответ

1

Вы можете попробовать rjdbc пакет, с помощью драйвера Microsoft SQL Server JDBC из: https://www.microsoft.com/en-us/download/details.aspx?id=21599

А потом сделать что-то вдоль линий:

drv <- JDBC(driverClass = "com.microsoft.sqlserver.jdbc.SQLServerDriver", 
      classPath = 'path/to/sqljdbc4.jar") 

con <- dbConnect(drv, 'jdbc:sqlserver:path/to/server;user=user;password=password;) 
+0

Спасибо за ответ, но я бы предпочел придерживаться пакетов, доступных на CRAN, и для этого решения требуется драйвер, который недоступен на CRAN, и, насколько мне известно, не будет кросс-платформой. Я уточню свой вопрос, чтобы лучше отразить это. –