RでMySQLのデータベースのデータを取り出して解析に利用。

    From Wiki

R言語(あーるげんご)はオープンソース・フリーソフトウェアの統計解析向けの
プログラミング言語及びその開発実行環境である。
R言語はニュージーランドのオークランド大学のRoss Ihakaと
Robert Clifford Gentlemanにより作られた。
現在ではR Development Core Team(S言語開発者であるJohn M. Chambersも参画)
によりメンテナンスと拡張がなされている。

との事

Rをインストール後、以下のパッケージはインストール済み。
> install.packages(“DBI”)
> install.packages(“RMySQL”)

※ MySQL5.6.21を利用しているので、コンパイルするときにパスの設定を調整してインストール。

[admin@CentOS01 ~]$ sudo -s 
[sudo] password for admin: 
[root@CentOS01 admin]# R

R version 3.1.1 (2014-07-10) -- "Sock it to Me"
Copyright (C) 2014 The R Foundation for Statistical Computing
Platform: x86_64-redhat-linux-gnu (64-bit)

R は、自由なソフトウェアであり、「完全に無保証」です。 
 一定の条件に従えば、自由にこれを再配布することができます。 
 配布条件の詳細に関しては、'license()' あるいは 'licence()' と入力してください。 

R は多くの貢献者による共同プロジェクトです。 
 詳しくは 'contributors()' と入力してください。 
 また、R や R のパッケージを出版物で引用する際の形式については 
 'citation()' と入力してください。 

 'demo()' と入力すればデモをみることができます。 
 'help()' とすればオンラインヘルプが出ます。 
 'help.start()' で HTML ブラウザによるヘルプがみられます。 
 'q()' と入力すれば R を終了します。 

 以下にエラー load(name, envir = .GlobalEnv) : 
   空の (0 バイトの) 入力ファイルです 
 起動準備中です -  警告メッセージ: 
 .RData に保存されたデータを復帰できません  
> library(RMySQL) 
 要求されたパッケージ DBI をロード中です 
 警告メッセージ: 
In dyn.load(file, DLLpath = DLLpath, ...) : 

> dbconnector <- dbConnect(dbDriver("MySQL"),dbname="test", user="admin", password="password")
> test.table <- dbGetQuery(dbconnector, "select * from Personal_Info")
> dbDisconnect(dbconnector)
[1] TRUE
> names(test.table)
[1] "id"   "name"
> class(test.table)
[1] "data.frame"
> test.table
  id                                                             name
1  1 D8F991170C3468696E4D963AE4A8E2A1D6404D7066F30A5D0419C0EC80D0602B
2  2                                                     This is test
3  3                                           ????????audit.log?????
> 

R


mysql_explain_log

1) 一般ログの全てのSELECTとUPDATE文の抽出
2) MySQLに接続した上で、1)で抽出したSQL文をEXPLAINで実行する。
この時UPDATE文は同等の検索処理を行うSELECT文に変換。
3) EXPLAINの実行結果を要約し、牽引検索の回数や全表検索になったSQL文
などを表示する。

mysql_explain_logを試そうと思いましたが、MYSQL5.1からインストールされないようなので
MYSQL5.0xxをダウンロードしてコピーして利用してみました。


mysql_explain_log (a third-party program) is no longer included in MySQL distributions.

mysql-5.0.83-linux-i686-icc-glibc23.tar.gz

[root@colinux bin]# pwd
/usr/local/src/mysql-5.0.83-linux-i686-icc-glibc23/bin
[root@colinux bin]# cp -p mysql_explain_log /usr/local/mysql/bin/
[root@colinux bin]#

my.cnfにlog=の設定が無かったので、まず最初に設定を入れて再起動した後に
幾つかコマンドを実行してみました。

generallog

DBDやDBIが無かった….. まずインストールしないと利用出来ないのでインストールしました。

1) DBIをyumでインストール

[root@colinux src]# yum -y install perl-DBI
fedora 100% |=========================| 2.1 kB 00:00
updates 100% |=========================| 2.3 kB 00:00

dbi

2) DBDをyumでインストール

[root@colinux DBD-mysql-4.011]# yum install perl-DBD-MySQL
Setting up Install Process
Parsing package install arguments
Resolving Dependencies

dbd

さて実行しようと思いましたが、以下のエラーが出たので

[root@colinux data]# mysql_explain_log /usr/local/mysql/data/mysql-general.log
explain_log provided by http://www.mobile.de
=========== ================================
Error: Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (2)

ユーザー、パスワード、socketの場所を変更して再実行しました。

vi /usr/local/mysql/bin/mysql_explain_log

$Param->{host}=”;
$Param->{user}=’root’;
$Param->{password}=’password’;
$Param->{PrintError}=0;
$Param->{socket}=’/tmp/mysql5.1.sock’;

以下のような結果が表示されました。
[root@colinux data]# mysql_explain_log /usr/local/mysql/data/mysql-general.log

mysql_explain1