目次


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

RMySQL

RのためのデータベースインタフェースとMySQLドライバを収めた パッケージ。主に次の二つの状況でお世話になる。

  • データがMySQLの上のデータベースにあり、Rからそれを取り出して解析したい。
  • R上のデータをMySQLのデータベースに保存したい。

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

インストール

Linux/UNIXの場合

MySQLがインストールされていれて、ライブラリやヘッダにきちんとパスが設定してあれば、以下のように簡単にインストールできる。

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

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

Windowsの場合

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

必須ソフトウェア

  1. Rtools (Rのバージョンに対応したもの)
  2. 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 のみをインストールする。
      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')

使い方

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

Vanderbilt Biostatistics : Main.RMySQLが、このパッケージのホームページになる。すべてを網羅してはいないが、CRAN上に置かれているレファレンスマニュアルも参考になる。

注意

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

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

 % mysql -h dbserver.domain -u test_user -p test_db

R-1.8.0から利用する際の注意

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)

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

リンク


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


添付ファイル: fileMySQL_Custom_Setup.png 1232件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Google
WWW を検索 OKADAJP.ORG を検索
Last-modified: 2015-03-01 (日) 01:15:59 (1354d)