目次

#contents
----


[[Rとインターフェースのあるアプリ]]

*[[RMySQL:http://cran.r-project.org/src/contrib/Descriptions/RMySQL.html]] [#ibddc002]
[[R]]のためのデータベースインタフェースと[[MySQL]]ドライバを収めた
パッケージ。主に次の二つの状況でお世話になる。
- データがMySQLの上のデータベースにあり、Rからそれを取り出して解析したい。
- R上のデータをMySQLのデータベースに保存したい。

MySQLにODBCドライバをインストールすれば、RODBCでも同様のことが実現できる。
最近のバージョンでは[[DBI]]パッケージに実装されているデータベースインタフェースの定義に従っている。

**インストール [#eac3e385]
***Linux/UNIXの場合 [#d96a010b]
[[MySQL]]がインストールされていれて、ライブラリやヘッダにきちんとパスが設定してあれば、以下のように簡単にインストールできる。

 $ sudo R
 > install.packages("DBI")
 > install.packages("RMySQL")

[[MySQL]]サーバを別のホストで運用している場合には、Rを動かすクライアント上にはMySQLがフルインストールされている必要はなく、clientパッケージのみがインストールされていれば十分。

***Windowsの場合 [#o9e1224d]
R 2.12以降は、RMySQLのコンパイル済バイナリは配布されていないため、自分でコンパイルしてインストールする必要がある。

必須ソフトウェア
+Rtools (Rのバージョンに対応したもの)
+MySQL Client C API library (MySQL Community Server 内にも同梱)
--MySQL Community Server を使用PCにデフォルトインストールした場合には MySQL Client C API library は既に入っているので新たに導入する必要無し
--XAMPPのMySQLを使用している場合や別ホストの MySQL Server を利用している場合には付属していないので、 MySQL Client C API library を別途インストールする必要あり
--[MySQL Client C API library のインストール例]XAMPP使用の場合やMySQL Serverをローカルで動かさない場合~
MySQL Community Server の MSI Installer 版をダウンロードし、インストール時の Setup Wizard で「Custom」を選び、以下の図のように Client C API library のみをインストールする。~
&ref(MySQL_Custom_Setup.png);


RMySQL 構築手順1
-Rの環境変数 MYSQL_HOME に MySQLのインストールディレクトリを8.3形式で指定する。
--例: MySQL Community Server 5.5 の MSI Installer 版を Windows Vista にデフォルトインストールした場合~
C:\Users\ユーザー名\Documents に 「.Renviron」という名前でテキストファイルを作成し、内容は
 MYSQL_HOME=C:/PROGRA~1/MySQL/MYSQLS~1.5
と記述する。

RMySQL 構築手順2
-[Windows XP/Vista]MySQL のインストールディレクトリにある lib\libmysql.lib を lib\opt\libmysql.lib にコピーする。~
MySQL Community Server 5.5の場合、デフォルトでは
 C:\Program Files\MySQL\MySQL Server 5.5\lib\libmysql.lib
にあるので、それを
 C:\Program Files\MySQL\MySQL Server 5.5\lib\opt\libmysql.lib
にコピーする。
-[Windows 7]MySQL のインストールディレクトリにある lib\libmysql.lib を bin\libmysql.lib にコピーする。

RMySQL 構築手順3
-Rで以下のコマンドを実行する。
 install.packages('DBI')
 install.packages('RMySQL',type='source')

**使い方 [#wc3c1c7e]
Rを利用しているのと同じマシンで動いているMySQLが管理しているtest_dbというデータベースに、test_userというユーザがアクセスを許可されているものとする。このときに、MySQL上のtest_dbの中のtest_tableというテーブルの中身をクエリで取り出してR側のtest.tableに格納するには、次の手続きをとれば良い。
 $ R
 > library(RMySQL)
 > m <- dbDriver("MySQL")
 > dbconnector <- dbConnect(m, dbname="test_db", user="test_user")
 > query.result <- dbSendQuery(dbconnector, "select * from test_table")
 > test.table <- fetch(query.result)
 > dbDisconnect(dbconnector)

ここでdbConnectは、データベースとのセッションを開始する関数、dbCloseはセッションを終了する関数である。dbSendQueryがSQL文をMySQLサーバに送って、応答を受け取り、それをRで扱えるようにfetchで変換している。

dbSendQueryとfetchを用いる手順は、dbGetQueryを用いて次のように一行でも記述できる。
 $ R
 > library(RMySQL)
 > dbconnector <- dbConnect(dbDriver("MySQL"),
   dbname="test_db", user="test_user")
 > test.table <- dbGetQuery(dbconnector, "select * from test_table")
 > dbDisconnect(dbconnector)

dbserver.domainというホストの上で動いている場合、またtest_userにパスワードが必要な場合には、少々長くなるが、次のように記述すれば良い。
 $ R
 > library(RMySQL)
 > dbConnect(dbDriver("MySQL"), host="dbserver.domain", dbname="test_db",
   user="test_user", password="password")
 ...

**参考URL [#z9731d77]
[[Vanderbilt Biostatistics : Main.RMySQL:http://biostat.mc.vanderbilt.edu/wiki/Main/RMySQL]]が、このパッケージのホームページになる。すべてを網羅してはいないが、[[CRAN上に置かれているレファレンスマニュアル:http://cran.r-project.org/web/packages/RMySQL/RMySQL.pdf]]も参考になる。

**注意 [#n9ff76bc]
RとMySQLをそれぞれ別のマシンで動かしているときには、サーバ側のMySQLのバージョンとクライアント側のMySQL(のライブラリ)のバージョンに注意すること。たとえば、サーバ側が3.23系列で、クライアント側が4.0系列の時には、RMySQLをクライアントにインストールしてもサーバには接続できないかもしれない。

上記の手続きで接続できずにエラーが表示される場合にはまず、同じマシンにインストールされているはずのMySQLのクライアントで接続を試みてみると良い。上述の例では、パスワードはコンソールから入力することにして、次の命令を実行すると、接続を確認できる。
  % mysql -h dbserver.domain -u test_user -p test_db


** R-1.8.0から利用する際の注意 [#pa453467]
http://stat.bell-labs.com/RS-DBI/download/#R-1.8.0 より

R-1.8.0で[[RMySQL]]を利用する場合、

 Error in dbDriver("MySQL") : couldn't find function ".valueClassTest"

というエラーを目にすることがある。これに対処するには、

 $R_HOME/src/library/methods/NAMESPACE

というファイル内に 

 export(.valueClassTest)

の一行を付け加えることで解決できる。

*リンク [#c5b8cb07]
-[[Here is a Youtube video on how to use R to access MYSQL through RMySQL R package:http://quantlabs.net/r-blog/2012/06/here-is-a-youtube-video-on-how-to-use-r-to-access-mysql-through-rmysql-r-package/]]

----
[[itoshi]] had written this page.~
[[悠遊]] modified, updated, and added a comment on 2003/12/06.~
[[kawaji]] added a notice for R-1.8.0 (2004/09/05).~
[[wakuteka]] slightly modified on 2009/09/22 
参考URLを最新のものに変更しました。~
[[nono]] modified about buiding RMySQL for Windows 2012/05/22~


トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS