iT邦幫忙

2017 iT 邦幫忙鐵人賽
DAY 14
0
Big Data

R語言與機器學習見面會系列 第 14

Day14 R語言外部資料介面(SQL Server)

前面兩天我們依序複習了R語言兩個經常使用的資料介面:EXCELJSON,有使用檔案的方式,也有透過Web API到Open Data提供者取得數據。

有些時候也許我們能直接從R引擎直接接觸到觀測收集來的數據,這些數據可能是結構化、非結構化的數據儲存;可能來自非關聯式、非關聯式的資料庫儲存。

好在R語言幾乎都有對應的套件(Package)能讓我們快速的和資料儲存串接在一起,面對充滿選擇與可能性的R語言人生,讓我們還是能專注在資料分析而不會迷失方向。

可以選擇的路線非常多:

  • 觀測後的結構化數據經常是存放在關聯式資料庫中(MySQLSQL ServerOracle等)
  • 有些非結構化、半結構化的數據則會儲存在NoSQL非關聯式資料庫中(Big TableHBaseCouchDBMongoDB等)。

身為一個.NET工程師最受熟悉的莫過於微軟關聯式資料庫SQL Server了,成資料大平台的她最近也很紅,身價不同以往,片約源源不斷。如果把數據儲存成.csv/.json再載入R引擎執行,處理的時間相較直接串連SQL DB多了ETL匯出匯入作業銜接的等待時間,讓我們今天來和SQL Server握手會。

測試資料表準備


這邊我們假定成員已經安裝好SQL Server資料庫及管理工具SSMS了。

先在資料庫建立一個測試資料表,並且新增6筆資料

T-SQL 建立資料表語法:

CREATE TABLE LaLigaClub( 
   #Id int identity(1, 1) Primary key, NAME VARCHAR(30), win INT, draw INT, lose INT, Goal INT, Pts INT) 

T-SQL 寫入資料語法:

insert into LaLigaClub 
values 
('Barcelona', 29, 4, 5, 112, 91), 
('Real Madird', 28, 6, 4, 110, 90), 
('Atletico Madrid', 28, 4, 6, 63, 88), 
('Villarreal', 18, 10, 10, 44, 64), 
('Sevilla', 14, 10, 14, 51, 52), 
('Granada', 14, 10, 14, 51, 52) 

打開SSMS(SQL Server管理工具),執行T-SQL查詢,確認結果集。
SELECT * FROM LaLigaClub

Result Set結果:

http://ithelp.ithome.com.tw/upload/images/20161214/20103434sF1QFb1XMC.png

接著我們在資料夾MyR新增一支Day14.R

http://ithelp.ithome.com.tw/upload/images/20161214/201034347xJrPc9VIX.png

讀取資料庫資料


這邊我們直接透過RODBC來讀取SQL Server資料。

在Day14.R中輸入程式碼

#-----------------------------------------------------------  
#RODBC 
#-----------------------------------------------------------  
#安裝RODBC Driver 
install.packages("RODBC") 
#載入Library 
library("RODBC") 
#-----------------------------------------------------------  
#連線字串 
sqlConnString = "driver={SQL Server};server=DbIp;database=database;uid={帳號};pwd={密碼}" 
conn <- odbcDriverConnect(sqlConnString) 
#執行sql查詢 
FraudDF1 <- sqlQuery(conn, " SELECT * FROM LaLigaClub ") 
#抓取前5筆顯示 
head(FraudDF1, 5) 
#關閉連線 
odbcClose(conn) 

執行結果
http://ithelp.ithome.com.tw/upload/images/20161214/20103434TKkjqoim6O.png

很快速的取得SQL查詢結果!

電腦世界中,數據的來源還有非常多,甚至是網頁上的資訊,爬蟲(crawl)是另外一門要繼續學習的知識,就把他列在明年的list吧!

鐵人賽這次先假設數據已經結構化了,來盤點三天學習到的R語言的資料介面:

其他套件


效能考量,這邊整理常用的資料庫API套件

  • Oracle資料庫可以安裝ROracle套件
  • MySQL資料庫可以安裝RMySQL套件
  • hadoop HBase可以安裝rmr套件或是透過Hadoop API

買餅吃的選擇也超多的

http://ithelp.ithome.com.tw/upload/images/20161214/20103434CQ02AOu0NS.jpg

2015攝於中山路,北港朝天宮


上一篇
Day13 R語言外部資料介面(json)
下一篇
Day15 R語言常用統計函數
系列文
R語言與機器學習見面會30

尚未有邦友留言

立即登入留言