RでローカルのMySQLに接続してデータを使う

MacBookAirを購入してまずはじめにやりたかったこと。 それはMacBookAirの個人データベース端末化。
購入した2011年当時は、iPhoneも脱獄しなければテザリングできない状況にありましたのでなるべくインターネット回線を使わない方法を工夫する必要があったこともあって色々調べた結果、MAMPのインストールからのWordPressの使用でした。

MAMPでWordPressを長年使ってきたのですが、DB化は一向に進まずここまできましたが、ようやくSequel
ProというMySQLクライアントの存在を知り再びDB熱が目覚めました。
当初FileMakerを使ってDB化も検討しましたが、高いソフトであるというのと、せっかくMAMP環境を持っているのに使いこなしていない点、あとMySQLはこれから身に付けることを避けられないスキルと考えていた点でローカルのSQLの活用方法に至るわけです。

ということで、Sequel Proという強力な武器を手にしたからにはRとの連携をする必要があるので早速やってみることにしました。

まずは、Sequel ProでDBを作成していきます。 CSVのインポート機能があるのでサクッとDBをつくることができます。

ただ注意点として、エクセルで作成したCSVだとうまくインポートができないという問題があります。これは、いったんテキストエディタにコピーしてCSVファイルを新しく作りなおすことで解決できます。

さっそくRでMySQLを使ってみます。 パッケージ「RMySQL」をインストールします。 CRANにあるのでサクッとインストールです。

調べてみるとかつては色々なバグがあったぽく、うまくインストールできない問題があることがわかりますが、現時点(R 2.15.2)では問題なくインストールできます。 RMySQLを読み出します。

> library(RMySQL)

dbDriver()関数で「MySQL」をしてし、変数「m」に格納します。
※別に後ほどのdbConnect()関数内に直接書いても問題ないです。

> m <- dbDriver("MySQL") dbConnect()関数をつかってDBにアクセスします。 bconnector <- dbConnect(m, dbname="accessdata", user="root", host="localhost", password="root") すると、なんか変なエラーができます。 以下にエラー mysqlNewConnection(drv,...) : RS-DBI driver: (Failed to connect to database: Error: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) ここはハマりポイントでした。 結果、ksnt氏「since 2010」の「RでMySQLを使う その1」に記載されていた「#usernameをきちんと書けばおk」のお言葉に救われる。ありがとうございます! 気を取り直してきちんと書いてみる。

※データ格納しているDBを「recorder」としています。

> dbconnector <- dbConnect(m, dbname="recorder", user="root", host="127.0.0.1", password="root") 続けて、DB「recorder」の中のアクセスデータが入っているテーブル「accessdata」を読み込む。 >query.result <- dbSendQuery(dbconnector, "select * from accessdata") > test.table <- fetch(query.result) >dbDisconnect(dbconnector) [1] TRUE

上記ブログに記載の通りに入力していきます(コピペで恥ずかしい)。
で、出力。

> test.table ?? ?????? ??? ???????? ????? 1 20120708 33 21
20 18 2 20120709 17 17 16 14 3 20120710 34 23 22 22 4 20120711 28
22 20 20 5 20120712 31 29 28 27 <中略>

文字化けてら。
DBのカラム名を日本語にしているとダメなのね。 Rの勉強に加えて、SQL文の学習も進めていこう。

Leave a Reply

%d人のブロガーが「いいね」をつけました。