目次
RのためのデータベースインタフェースとMySQLドライバを収めた パッケージ。主に次の二つの状況でお世話になる。
MySQLにODBCドライバをインストールすれば、RODBCでも同様のことが実現できる。 最近のバージョンではDBIパッケージに実装されているデータベースインタフェースの定義に従っている。
MySQLがインストールされていれて、ライブラリやヘッダにきちんとパスが設定してあれば、以下のように簡単にインストールできる。
$ sudo R > install.packages("DBI") > install.packages("RMySQL")
MySQLサーバを別のホストで運用している場合には、Rを動かすクライアント上にはMySQLがフルインストールされている必要はなく、clientパッケージのみがインストールされていれば十分。
R 2.12以降は、RMySQLのコンパイル済バイナリは配布されていないため、自分でコンパイルしてインストールする必要がある。
必須ソフトウェア
RMySQL 構築手順1
MYSQL_HOME=C:/PROGRA~1/MySQL/MYSQLS~1.5と記述する。
RMySQL 構築手順2
C:\Program Files\MySQL\MySQL Server 5.5\lib\libmysql.libにあるので、それを
C:\Program Files\MySQL\MySQL Server 5.5\lib\opt\libmysql.libにコピーする。
RMySQL 構築手順3
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") ...
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
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