RMySQL
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
]
開始行:
目次
#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~
終了行:
目次
#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~
ページ名: