天天看點

《資料科學:R語言實作》——2.6 從資料庫中讀取資料

本節書摘來自華章計算機《資料科學:r語言實作》一書中的第2章,第2.6節,作者 丘祐玮(david chiu),更多章節内容可以通路雲栖社群“華章計算機”公衆号檢視。

由于r會把資料讀入記憶體中,是以這對于處理和分析小型資料集很合适。然而,由于企業每天積累的資料量要比個人的多得多,資料庫文檔在存儲和分析大型資料時就變得更加常用。為了使用r通路資料庫,我們可以使用rjdbc、rodbc或者rmysql作為通信橋梁。在這一部分中,我們會介紹如何使用rjdbc連接配接存在資料庫中的資料。

《資料科學:R語言實作》——2.6 從資料庫中讀取資料

執行下列步驟,使用rjdbc連接配接r和mysql。

1.首先,我們需要安裝加載rjdbc程式包:

《資料科學:R語言實作》——2.6 從資料庫中讀取資料

3.解壓下載下傳的mysql-connector-java-5.0.8.zip,并把解壓檔案mysql-connector-java-5.0.8-bin.jar放在對應的位置。例如,在作者的計算機上,解壓的.jar檔案放在c:program filesmysql路徑下。

4.接着,我們可以下載下傳mysql驅動,以便連接配接mysql:

《資料科學:R語言實作》——2.6 從資料庫中讀取資料

5.我們可以使用注冊的mysql驅動,建立mysql連接配接:

《資料科學:R語言實作》——2.6 從資料庫中讀取資料

6.使用基本操作,從連接配接中擷取表列:

《資料科學:R語言實作》——2.6 從資料庫中讀取資料

7.使用select操作擷取資料:

《資料科學:R語言實作》——2.6 從資料庫中讀取資料

8.最後,我們從mysql斷開連接配接:

《資料科學:R語言實作》——2.6 從資料庫中讀取資料

r可以使用兩大标準通路資料庫,即odbc和jdbc。jdbc(又稱java資料庫連接配接)由一系列java實作的類和接口組成,它們允許java和資料庫間直接通信。另外,odbc(又稱公開資料庫連接配接)是由微軟開發的标準接口。

要比較兩個标準,odbc在輸入和輸出資料方面性能更優;但是它也是平台依賴的。換句話說,在你的程式運作之前,你必須為不同的作業系統配置連接配接。相反,jdbc是平台獨立的,意味着寫好的程式可以在任何作業系統上運作。

要使用rjdbc連接配接r和mysql,我們首先需要從cran安裝加載rjdbc程式包。rjdbc提供了接口來連接配接資料庫。 因為jdbc是使用java實作的,在使用rjdbc之前,你需要安裝rjava。

接着,我們從mysql的官方下載下傳網站下載下傳mysql connector/j,它是mysql的官方jdbc驅動。解壓.zip檔案(或.tar檔案後),我們把檔案放在合适的路徑下(你可以把.jar檔案添加到類路徑下)。現在我們可以編寫r程式來通路資料庫了。

在我們的r腳本中,我們在送出任何查詢請求之前,首先需要注冊和初始化mysql驅動。這裡,我們需要指定驅動的類名,com.mysql.jdbc.driver(不同的資料庫有不同的類名),以及.jar檔案mysqlconnector-java-5.0.8-bin.jar。我們可以在.jar檔案中找到類 。接着,我們使用注冊的驅動建立資料庫連接配接。這裡,我們需要提供連接配接字元串(jdbc:mysql://localhost:3306/finance)、使用者名(root)和密碼(test)來通路資料庫。因為我們的mysql伺服器安裝和運作在本地主機上,我們可以設計一個連接配接字元串"jdbc:mysql://localhost:3306/finance" 。3306是預設的mysql端口,finance是我們的目标資料庫。

連接配接建立以後,我們可以給資料庫送出sql請求。我們首先使用dblisttables指令列出finance資料庫上的表。然後,我們建立名為majortrade的表,并使用insert語句把snp500.csv中的資料記錄插入majortrade表中。然後我們使用select語句擷取資料庫中的資料。最後,要釋放連接配接,我們需要使用dbdisconnect指令。

在r中,你也可以使用rodbc和rmysql來連接配接資料庫。在這一部分中,我們會介紹如何通過rmysql通路資料庫。執行下面的步驟,安裝加載rmysql程式包,然後給mysql資料庫送出查詢。

1.我們需要安裝加載rmysql程式包:

《資料科學:R語言實作》——2.6 從資料庫中讀取資料

2.我們可以使用合法的使用者名和密碼通路mysql:

《資料科學:R語言實作》——2.6 從資料庫中讀取資料

3.現在,我們可以給資料庫送出查詢,并從finance資料庫中選取交易資料:

《資料科學:R語言實作》——2.6 從資料庫中讀取資料