[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への直接接続はかなり使ってます。