在 Ubuntu 系統上使用 R 取得 SQL Server 資料

     在 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 一起討論更方便的套件與做法。

2 comments

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com 標誌

您的留言將使用 WordPress.com 帳號。 登出 /  變更 )

Google photo

您的留言將使用 Google 帳號。 登出 /  變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 /  變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 /  變更 )

連結到 %s