如何用R訪問MySQL資料庫

最近在學習完慕課上一套基礎MySQL課程後,感覺學習遇到了一些瓶頸,對於自學的《統計學》後半部分的內容理解不到位,加之對於《R語言實戰》一書中前五章內容的熟練度不夠,致使很難進行《R語言實戰》第七、八章統計分析內容的學習,不得以又重新復盤了一遍這兩本書之前學過的內容,期間看到猴子老師公眾號上轉載了自己第四章的實踐作業,給了我很大信心,非常感謝猴子老師。

在復盤到《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

全部填好後,點擊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

到此我們就完成了R和MySQL的連接,寫的很不專業,對於一些內容的理解可能有失偏頗,還請各位看完後給予批評指正。

推薦閱讀:

[跟吉姆一起讀LevelDB]5.資料庫恢復(2)
當 TiDB 遇上 Jepsen
如何從零開始參與大型開源項目

TAG:R编程语言 | MySQL | 数据库 |