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

Posted on 2014/01/09

ToC

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

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からデータを取得する準備が完了しました。