|
目次 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のコンパイル済バイナリは配布されていないため、自分でコンパイルしてインストールする必要がある。 必須ソフトウェア
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. |