在 Ubuntu 系統上連結 SQL Server 資料需要先安裝 Unixodbc、FreeTDS 套件,之後需要設定相關的 freetds.conf、odbcinst.ini、odbc.ini 檔案。在嘗試過程中又一直遇到相依套件壞掉的問題,加上眾多的文件及繁雜的步驟,很讓人沮喪,甚至一度想放棄 Ubuntu 回到 Window 系統 QAQ。如果讀者跟小編一樣遇到 R 連結資料庫上的種種問題,希望這篇對你們有一點點幫助。
在這裡介紹使用 R 套件 RJDBC 連結 Microsoft SQL Server,可以省掉繁複的設定檔問題。
安裝 OpenJDK7, rJava
首先在 Ubuntu Terminal 中安裝 OpenJDK7 及 rJava:
sudo apt-get install openjdk-7-jre sudo apt-get install r-cran-rjava
下載 JDBC Driver
在這裡選取需要的 JDBC Driver(註) ,參考 Microsoft 的系統需求安裝相關的版本,示範使用的是 4.1 版本,檔案是 sqljdbc_4.1.5605.100_cht.tar.gz。
註:選擇什麼樣版本的 JDBC Driver 跟想要連結的資料庫有關,建議查詢資料庫的版本選擇適合的 JDBC Driver。
https://www.microsoft.com/zh-tw/download/details.aspx?id=11774
解壓縮剛剛下載的 tar.gz 檔案,將解壓縮檔案移至想要的目錄:
cd ~/Downloads/ sudo tar -xf sqljdbc_4.1.5605.100_cht.tar.gz sudo mv ~/Downloads/sqljdbc_4.1/etc/
到了這個步驟就算完成在 Ubuntu 上相關的 JDBC Driver 的安裝。
在 R 上連結 MS SQL Server 資料
安裝完 JDBC Driver 後就可以使用 R 連結 MS SQL Server 資料。
# 安裝 RJDBC 套件 install.packages(“RJDBC”) library(RJDBC) # 讀取 JDBC Driver drv # 連結資料庫 conn <- dbConnect(drv, "jdbc:sqlserver://serverName: port; databasename = yourdatabasename", "userID", "password") sqlText <- paste("SELECT * FROM myTable") #這裡使用 SQL 語法 queryResults <- dbGetQuery(conn, sqlText)
head(queryResults)而 queryResults 就是想要的資料。
結論
Ubuntu 系統使用上跟 Windows 相差很遠,之前在 Windos 上習慣使用的是 RODBC 連結 MS SQL Server,但是 RODBC 一直無法成功的連結資料庫,所以試著改用 RJDBC 意外發現另外一片天堂!目前還在邊學習邊使用 Ubuntu 的狀態,歡迎一樣在 Ubuntu 上抱頭打滾的 R user 一起討論更方便的套件與做法。
先感謝大大的整理,不過在最後連結資料庫的程式碼 [databasename: yourdatabasename] 好像會error
小弟改成 [databasename = yourdatabasename] 才順利連結
讚讚
謝謝你的提醒,確實是要使用 [databasename = yourdatabasename] 才對。
讚讚
感謝 long.jian 的好文,
1) sudo mv ~/Downloads/sqljdbc_4.1/etc/ 這看不懂意思? 能否補充一下.
2)# 安裝 RJDBC 套件
install.packages(“RJDBC”)
library(RJDBC)
# 讀取 JDBC Driver
drv
# 連結資料庫
conn <- dbConnect(drv, "jdbc:sqlserver://serverName: port; databasename = yourdatabasename", "userID", "password")
sqlText <- paste("SELECT * FROM myTable") #這裡使用 SQL 語法
queryResults <- dbGetQuery(conn, sqlText)
這是在哪動作?
感謝您!
讚讚
1) 將解壓縮的檔案移到你想要的路徑上,也可以放在 Downlaods 的路徑上就好
2) 因為手邊沒有 Ubuntu 的電腦,但是drv 應該要這樣設定的。
“`
# 這個是 windows 的範例
drv <- JDBC("com.microsoft.sqlserver.jdbc.SQLServerDriver", "C:\\sqljdbc_6.0\\cht\\sqljdbc42.jar")
“`
讚讚