目次


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

RMySQL

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

RMySQL 構築手順2

RMySQL 構築手順3

使い方

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 2345件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2023-03-25 (土) 11:19:16