ytooyamaのブログ

サーバ構築とか、仕事で発見したこととか、趣味のこととかを書いています。

RでPostgreSQLにつなぐ

Web検索でRでPostgreSQLにつないでそこからデータを取り込む方法を調べると、install.packages('RPostgreSQL')してlibrary(RPostgreSQL)を使う方法が出てくるのですが、 ライブラリー「RPostgreSQL」はPostgreSQLのバージョン15以降などで標準設定となっている「SCRAM authentication」に対応していないようで、 「RPosgreSQL error: could not connect SCRAM authentication requires libpq version 10 or above」といったエラーになります。

回避する方法としてPostgreSQL側の設定をゆるくすれば接続はできるのですが、セキュリティー的にそれってどうなんよということと、設定変更して実際に繋げられるようにはなったものの色々な設定を変えたり、設定を変えたはずが変わっていなかったり、ユーザーを作り直したりと色々と面倒だったので他の方法を調べたら、次のようなヒントを見つけました。

「RPostgreSQL」は2013年で開発が止まっており、一方「RPostgres」のほうは今も活発なのでこちらを使ったほうが良さそうとのこと。

接続を試す

RコンソールでRPostgresパッケージをインストール

install.packages("RPostgres")

あとはこのような感じで接続します。

library(DBI)
library(RPostgres)

con <- dbConnect(RPostgres::Postgres(), host="192.168.0.200", 
                 port=5432, 
                 user= rstudioapi::showPrompt("UserID", "Put your userID"), 
                 password=rstudioapi::askForPassword(""), 
                 dbname="testdb")
dataset <- dbGetQuery(con,"SELECT * FROM caffee")

データが取り込めたか確認してみます。成功です。

> dataset$temperature
 [1] 22 23 23 24 24 25 25 26 26 27 27 28 29 32 28 24 31 31 32 33 33 34 34 35 35
> dataset$coffee
 [1] 300 310 320 330 320 330 310 320 310 340 360 350 360 400 370 310 360 390 390 400 410 450 460 440 480
> class(dataset$temperature)
[1] "integer"
> class(dataset$coffee)
[1] "integer"

実際触っている様子

このブログサイトはJavaScriptを使っていますが、読み込んでいるJavaScriptは全てはてなが提供しているものであり、筆者が設置しているものではありません。