データ分析がしたい

企業でデータ分析などやっています。主にRやPythonによるデータマイニング・機械学習関連の話題やその他備忘録について書いてます。

[R]RからPostgresql DBへの接続

私はデータマイニングの仕事なんぞさせて頂いてる関係で、DBに保存してある情報をRで分析することが頻繁に生じます。

Rで分析を行う際、元データをRに取り込む最も簡単な方法はcsvなどのテキストから読み込む方法です。
しかし、元データテーブルがDB上にある場合、最新のテーブル情報を直接利用したい、SQLで整形した結果を取り込みたいといった状況では、DBから直接Rにデータ読み込めた方が便利です。


Postgresql DBに保存してあるデータテーブルを読み込む場合、「DBI」と「RPostgreSQL」パッケージを利用するのが楽で良いと思います。
「RODBC」を使う方法もありますが、設定等面倒なのでお勧めしません。

DBI」と「RPostgreSQL」を利用する場合、以下のようにすればPostgresql DBのテーブルを読み込むことができます。

install.packages("DBI")
install.packages("RPostgreSQL")
library(DBI)
library(RPostgreSQL)
con <- dbConnect(PostgreSQL(),host="host",user="user",password="password",dbname="dbname")
dataset <- dbGetQuery(con,"SELECT * FROM tablename")
head(dataset)

hostとuser、password、dbnameには接続先DBの情報を入力し、
dbGetQueryで取得したい情報のクエリを入力すればdatasetにリクエスト結果が戻ってきます。


「RODBC」で接続する場合は以下のページが参考になります。
 http://ameblo.jp/kinako20000/entry-11374203687.html

詳しくは書きませんが、設定が会っていれば以下のコードで結果を取得できます。

library("RODBC")
connPsql <- odbcConnect("odbc_postgresql","user","password")
sql <- sqlQuery(connPsql,"SELECT * FROM tablename")
head(sql)


自分の場合、データ整形はPythonで行い、データマート作成はSQLで行い、
分析はR、Excelなどで行うのでRからDBへの直接接続はかなり使ってます。