RとPythonによるデータマイニング

企業でデータ分析などやっています。主に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への直接接続はかなり使ってます。