2015-05-06 51 views
0

我正在嘗試重新編譯RODBC軟件包,以便我可以從OS X 10.10.3上的R連接到MS SQL Server。我試圖修改我在這裏找到的指令here,但我不確定在哪裏指向$ DYLD_LIBRARY_PATH=(我已經嘗試了/Library/ODBC//Library/ODBC/Actual SQL Server.bundle/Contents/MacOS/,但無論如何都無法連接到數據庫)。有沒有人成功做到這一點?另外,一旦重新編譯,我應該使用odbcconnect還是odbcdriverconnect?我使用odbcconnect命令在同一臺機器上使用R從Windows VM成功連接/執行查詢。提前致謝!在OS X上使用Actual Technologies SQL Server驅動程序重新編譯RODBC 10.10.3

+0

不太上的話題,但:RJDBC的偉大工程於從R連接到SQL Server上的OS X,無需把玩。只是供參考 – arvi1000

+0

你見過這個:http://www.odbcmanager.net/faq.php(沒有它的經驗,....只是一個搜索試圖找到事情應該找到的地方。) –

+0

我不[回憶](http://stackoverflow.com/a/26219189/324364)必須爲RODBC設置該環境變量。我使用iODBC,但它不應該有所作爲。我寫的指示是否更好? – joran

回答

0

我想有人可以舉報我發佈「不是答案」的東西,但我想我在18個月前的R-SIG-Mac郵件列表存檔中發現了一些可能或可能沒有用的材料。它具體說明作者認爲二進制文件應位於何處。這是太長髮布的評論:

From: Marc Schwartz <[email protected]> 
Subject: Re: [R-SIG-Mac] RODBC not connecting from my Mac 
Date: October 30, 2013 8:35:24 AM PDT 
To:  [email protected] R <[email protected]org> 

「大家好,

我想跟進這一線索,如我上面所提供的信息是不完全的,因爲我現在知道從與Ripley教授交談,通過在Apple開發者論壇中搜索以及與Actual Technologies(AT)技術支持部門進行電子郵件交換的在線信息。

從OS X 10.6(Snow Leopard)開始,Apple刪除了ODBC管理員GUI應用程序從默認的操作系統安裝,正如我上面提到的。蘋果版本是和仍然可以作爲一個單獨的d我也注意到,從Apple.com下載並且AT人員開始支持併發布和更新稱爲ODBC管理器的版本。

但是,這只是事情的一部分,事實證明。

從OS X 10.8(Mountain Lion)開始,Apple開始摒棄直接支持IODBC的過程。 iODBC的10.8包含在XCode中的頭文件顯然具有這種跡象,但它並沒有公開地記錄在其他任何地方,包括XCode發行說明。 iODBC的二進制dylib文件仍然存在於10.8的/ usr/lib中,所以如果你想使用例如10.8上的OS X的RODBC二進制文件,那就沒有問題了。除非手動設置配置文件,否則您仍然需要ODBC管理員/管理器GUI設置DSN配置。

沒有具體的跡象表明爲什麼,但蘋果代表在蘋果開發者論壇上發佈的8月份的蘋果代表論壇上表示,蘋果公司已決定進行默認安裝OS X上的iODBC。這個回覆是給另一個注意到頭文件內容的用戶指出的,併發布了一個查詢。蘋果代表建議用戶開始考慮前往iODBC.org獲取可用的OS X二進制文件或向前移動的源代碼。或者,用戶應考慮轉移到其他ODBC工具,如unixODBC或使用本機(非ODBC)驅動程序來獲取感興趣的數據源。

隨着10.9(小牛),蘋果現在完全從默認的OS X安裝中刪除iODBC。在XCode的最新版本中,iODBC的二進制dylib文件出現在10.9的SDK樹中,但頭文件已被刪除,從而導致需要從源構建依賴iODBC的應用程序的人們遇到問題。但是有跡象表明,在將來的某個時候,即使是iODBC dylib二進制文件也會從XCode發行版中刪除。至少在短期內,人們可以將dylib文件從10.9中的SDK樹中可行地複製/移動到/ usr/lib,或者簡單地將其鏈接到它們,但這當然意味着僅僅爲此目的安裝XCode,如果沒有其他需要爲了它。

上週我從10.8升級到10.9之後,在使用帶有AT驅動程序的RODBC二進制文件訪問我們的Oracle服務器時,我沒有任何問題。因此,我沒有初始依據認爲10.9有任何錯誤。

但是,我當時和現在都不知道的是,AT最近更新了它們的ODBC驅動程序安裝包以包含iODBC二進制文件,具體是因爲Apple之前的iODBC棄用決定。如果它們不在安裝AT驅動程序的系統上(例如10.9),那麼AT安裝包中的iODBC二進制文件將安裝在/ usr/lib中,以使AT驅動程序能夠正常工作。這對於AT來說很重要,因爲它們的驅動程序被編譯爲使用iODBC而不是unixODBC。我巧妙地更新了我的MacBook Pro上的AT驅動程序安裝,上個星期更新到10.9後,這在10.9上偏向了我對iODBC支持的觀點。因此,正如Mikkel在原文中指出的那樣,人們需要知道iODBC已經從OS X 10.9中完全刪除。

正如蘋果代表在發佈論壇上的回覆中指出的那樣,如果您希望繼續在OS X上使用帶有ODBC驅動程序的iODBC,則可以直接訪問iODBC.org。如果您選擇購買並使用AT ODBC驅動程序,正如我爲Oracle所做的那樣,如果沒有其他情況,iODBC二進制文件現在將安裝在您的系統上。 AT安裝軟件包還包含ODBC管理器GUI。

替代品當然會像Mikkel所做的那樣轉移到unixODBC,小心不管您選擇使用哪種ODBC驅動程序都是兼容的。如果你選擇沿着這條路走下去,就像我在上面的回覆中提到的那樣,你需要從源代碼編譯RODBC包,因爲它默認是針對OS X針對iODBC庫進行編譯的。

感謝Ripley教授的溝通和AT支持人員對當前情況及其社區支持的澄清。

問候,

馬克·施瓦茨」

0

因爲:a)OP要我說明我的意見,B),這是太長髮布的評論,以及c)可能有助於有人在今後,我張貼此作爲一個答案,即使它不是關於RODBC本身

這是我與R連接到SQL Server在OS X上你可以從微軟

library(RJDBC) 

# jar location 
classPath <- 'YOUR_DIR/sqljdbc_4.0/enu/sqljdbc4.jar' 
stopifnot(file.exists(classPath)) 

# init driver 
drv <- JDBC(driverClass='com.microsoft.sqlserver.jdbc.SQLServerDriver', 
      classPath=classPath) 

# connect to db (replace YOUR_DB, user, pword as needed, obviously!) 
conn <- dbConnect(drv, "jdbc:sqlserver://YOUR_DB", user, pword) 

# now you are ready to run your version of sql_statement 
results <- dbGetQuery(conn, sql_statement) 
拿到罐子

sessionInfo()調用的相關位:

R version 3.1.2 (2014-10-31) 
Platform: x86_64-apple-darwin13.4.0 (64-bit) 

locale: 
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8 

attached base packages: 
[1] stats  graphics grDevices utils  datasets methods base  

other attached packages: 
[1] RJDBC_0.2-4  rJava_0.9-6  DBI_0.3.1 
相關問題