2017-02-10 25 views
-1

我目前使用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

回答

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上,並且據我所知,它不會是跨平臺的。我會更新我的問題以更好地反映這一點。 –