如何用R訪問MySQL資料庫
在復盤到《R語言實戰》一書中38頁的2.3.11節『訪問資料庫管理系統』時,書中提到R有許多面向關係型資料庫管理系統(MySQL)的介面,可通過RODBC包來訪問。因為在第一遍學習的時候沒有相關知識,所以這部分直接跳過了,而這次已經了解了MySQL的基本知識,便打算嘗試一下,過程中遇到了很多坑,在此整理成文。
1.明確概念
- DBMS:關係型資料庫管理系統,包括MySQL、SQL Server、Access、Orcale等等。
- ODBC:開放資料庫互連,應用程序(R)通過ODBC介面即可對不同的資料庫進行操作,我們可以把R想像成電腦,ODBC就是U盤插口器,不同的資料庫就是不同的U盤,這樣我們就不需要直接與任何DBMS打交道,即可實現程序對不同DBMS的共享。
- 數據源:資料庫位置和資料庫類型等連接信息的總和,數據源在使用前必須通過ODBC管理器進行登陸。
2.下載和安裝MySQL的ODBC驅動
下載地址Download Connector/ODBC,根據自己的電腦選擇32位還是64位。
3.安裝Microsoft Visual C++ 2013 Redistributable Package
在打開ODBC的安裝包開始正式安裝之前還需要下載Microsoft Visual C++ 2013 Redistributable Package,不然即使將ODBC安裝成功也打不開不能進行配置,這個C++的安裝包在網上百度一下就能找到,下載之後點開安裝即可,非常簡單。
之後便可以開始正式安裝ODBC驅動,點開下好的安裝包一路next,最後會將ODBC文件默認放在C盤Program Files文件下,我這裡直接默認安裝到了和之前MySQL同一個文件夾。4.打開ODBC數據源
安裝成功後,下一步我們就可以通過ODBC來配置我們的數據源。打開電腦的控制面板——選擇系統和安全——選擇管理工具,之後就可以看到ODBC數據源:
5.配置數據源
打開相應的數據源,在用戶DSN一欄下點擊添加,選擇相應的資料庫(這裡就是MySQL ODBC 5.3 ANSI Driver),點擊完成即可進入數據源的配置界面:
面板中的幾個選項:
- Data Sounrce Name:數據原名稱,之後我們在R中調用相應的資料庫需要提供的一個名稱,可取任意有效的名稱,比如這裡我可以取名Mysql.1
- Description:可不填
- TCP/IP:這裡我們需要連接到本地的資料庫,所以直接填寫localhost
- User:mysql資料庫的用戶名,這個是在安裝mysql的時候配置的,一般默認是root
- Password:訪問資料庫的密碼,也是我們最初在安裝配置mysql的時候設定的
- Database:資料庫名稱,資料庫必須是已經存在於mysql中的資料庫,這裡我們用一個之前在mysql中的已經建好的資料庫test
配置好數據源,接下來就可以愉快的用R調用資料庫了。
6.資料庫導入R
這一部分內容在《R語言實戰》一書中39頁有簡要的介紹,首先要安裝一個RODBC包,下面是包中的主要函數:
MySQL中的數據表:
#用sqlFetch函數讀取數據表n> library(RODBC)n> myconn<-odbcConnect(Mysql.1,uid = root,pwd = 123456)n> testdata<-sqlFetch(myconn,tdb_goods)n> close(myconn)n
#也可以用sqlQuery函數讀取,它的功能更強大,因為其中可插入任意有效SQL語句n> library(RODBC)n> myconn<-odbcConnect(Mysql.1,uid = root,pwd = 123456)n> testdata.1<-sqlQuery(myconn,SELECT*FROM tdb_goods)n> close(myconn)n
推薦閱讀: