0

我目前正在使用 R 中的RODBC包对 SQL Server 数据库运行查询。Knitr 现在能够使用SQL 代码块(使用DBI 包)。我想利用这一点,因为它允许我在我的 RMarkdown (RMD) 文档中嵌入干净的 SQL。但是,我在让 DBI 连接到我的 SQL Server 环境时遇到了麻烦。

我浏览了 DBI 的帮助文件和小插图,但不知所措。他们提到了用于 SQL Server 的RSQLServer,但它已从 CRAN 中提取出来。我知道我可以使用 devtools 从 gitHub 安装它,但我不希望依赖无法在 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)
4

1 回答 1

1

您可以使用来自以下网址的 Microsoft SQL Server JDBC 驱动程序尝试该rjdbc软件包: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;)
于 2017-02-10T19:26:02.953 回答