如何将R DBI包连接到SQL Server?

问题描述:

我目前使用R中的RODBC软件包对SQL Server数据库运行查询。 Knitr现在可以使用SQL code chunks(使用DBI package)。我想利用这一点,因为它允许我在RMarkdown(RMD)文档中嵌入干净的SQL。但是,我在遇到DBI连接到SQL Server环境时遇到问题。如何将R DBI包连接到SQL Server?

我已经浏览了DBI的帮助文件和小插曲,但我很茫然。他们提到SQL Server的RSQLServer,但它已从CRAN中提取。我知道我可以使用devtools从gitHub安装它,但我宁愿不依赖于无法在CRAN上保留的软件包。我还喜欢避免使用RJDBC连接器,因为我听说过可靠性问题,并且使代码更加便于携带。

虽然我的目标是在RMD文件中使用它,但下面的代码是一个简单的R脚本,以尽可能减少示例。

有没有人知道如何获得与RODBC示例类似的方式工作的DBI示例?

# *** 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

你可以尝试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上,并且据我所知,它不会是跨平台的。我会更新我的问题以更好地反映这一点。 –