MySQLからRへのデータ取得(1)

Rをインストールしたので、早速データを取り込んでみたいと思います。
単純にCSVファイルを取り込んで処理をするという方法も小回りがきいて非常に良いのですが、やはり処理を自動化してゆく上ではデータベースからのデータ取得は避けられません。
そういうわけで、MySQLからデータを取得してみたいと思います。

必要パッケージのインストール

RからMySQLに接続してデータを取得する際には、「DBI」「RMySQL」という2つのパッケージを利用します。
パッケージのインストールは、Rのコンソールから実行できます。
install.packagesのメソッドで実行するとパッケージのファイルがダウンロードされてきて自動的にインストールされます。

> install.packages("DBI")
 URL 'http://cran.rstudio.com/bin/macosx/contrib/3.0/DBI_0.2-7.tgz' を試しています 
Content type 'application/x-gzip' length 270695 bytes (264 Kb)
 開かれた URL 
==================================================
downloaded 264 Kb

The downloaded binary packages are in /var/folders/downloaded_packages

> install.packages("RMySQL")
 URL 'http://cran.rstudio.com/bin/macosx/contrib/3.0/RMySQL_0.9-3.tgz' を試しています 
Content type 'application/x-gzip' length 2189117 bytes (2.1 Mb)
 開かれた URL 
==================================================
downloaded 2.1 Mb

The downloaded binary packages are in /var/folders/downloaded_packages
> library(RMySQL)
 要求されたパッケージ DBI をロード中です 

このような具合で、Mac環境の場合には無風状態でパッケージインストールまで完了できたのですが、Windows環境では実は少してこずりました。

具体的には、「RMySQL」が簡単にインストールできませんでした。
install.packages(“RMySQL”)とコマンドを実行すると、バイナリ版はないのでソース版でインストールするようにメッセージ表示されてしまいます。

そこで、ソース版をインストールすることになるのですが、前提として下記の2つが追加で必要になります。

  • RTools (Rのサイトからダウンロード)
  • MySQLモジュール(こちらはMySQLのサイト)

RToolsのインストール

こちらもインストーラに沿ってインストールしてゆくことになります。
コンポーネントは、デフォルトで選択されているものをインストールしました。

環境変数(PATH)の追加についても基本的にチェックボックスを入れて追加するようにしました。

C:\Rtools\bin;
C:\Rtools\gcc-4.6.3\bin;
C:\Rtools\gcc-4.6.3\i686-w64-mingw32\bin;
(インストールバージョンにあわせてください)

これでRToolsのインストールは完了です。

MySQLモジュール

ソースのコンパイル時にMySQL Serverのライブラリ(libmysql.dll)が必要となります。
結果的にMySQLサーバーをインストールすることになってしまいますが、仕方がないと行ったところでしょうか。

MySQLのインストール後に下記のユーザー変数を定義します。(定義した後には再ログオンをしてください。)

C:\Program Files\MySQL\MySQL Server 5.6
(インストールバージョンにあわせてください)

この状態で、Rのコンソールよりパッケージ版のインストールを実行してみます。
かなりたくさんの出力がされたので、良さそうな感じに見えますが、途中でエラーが出力されてしまいます。

> install.packages('RMySQL', type='source');
(中略)
gcc.exe: error: C:\Program Files\MySQL\MySQL Server 5.6/lib/opt/libmysql.lib: No such file or directory
ERROR: compilation failed for package 'RMySQL'

どうやら目当てのライブラリファイルのパスが異なっているようです。
MySQLを標準でインストールするとC:\Program Files\MySQL\MySQL Server 5.6/lib/にlibmysql.libが配置されているのですが、どうやらRMySQLは/libディレクトリの中にある/optディレクトリ内にファイルがあることを望んでいるようです。
すこし日和見な解決方法になってしまいますが、/optのディレクトリを作成してその中にlibmysql.libを入れてからインストールを行うとうまくインストールができました。

これで、MySQLからデータを取得する準備が完了しました。