PostgreSQLとRstudio環境構築
正直PostgreSQLは、ほぼ触ったことがありません。
ただ医師会のレセコン(ORCA)や、オープンソース電子カルテのOpenDolphinはPostgreSQLを利用しており、これからレセコン・電子カルテデータをいじるのに避けては通れません。
はじめて操作した電子カルテはMySQLだったのですが、使い始めはSQLの文法より何より、データベースサーバー・クライアントのインストール等の環境構築で手間取った記憶があります。もちろん細かいこともあとから勉強必要ですが、データベースにアクセスして操作する楽しみを少しでも早く感じれるように、環境構築の時間を可能な限り短くしたいものです。
今回PostgreSQLでSQLの練習前に、簡単に早く環境構築(PostgreSQL+Rstudio)することを目標に書いてみました。
準備するもの
時代はUbuntuです。Dockerのオーバーヘッドを減らすためメインPCのWindowsをUbuntuに上書きするか(無茶?)、仮想マシン(VMware等)にUbuntuOSをインストールしておいてください。僕はUbuntu64bit16.04LTSをインストールした仮想マシンを用意しました。
インストールからの流れ
- Dockerいれる
- PostgreSQLコンテナ走らせる
- Rstudioコンテナ走らせる
- ホストPCからつないでみる
では始めます。Ctrl+Alt+Tと押して、端末を立ち上げてください。
シェルスクリプトを書き込むrpostgres.shファイルを作ります。
$ gedit rpostgres.sh
入力するとエディターが立ち上がります。下記のスクリプトをコピペして、記録してエディターを終了してください。
#!bin/sh sudo apt-get update sudo apt-get install apt-transport-https ca-certificates sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D sudo apt-get install docker.io # まずPostgres環境 sudo docker run -d --name=postgres -p 5432:5432 -e POSTGRES_PASSWORD=mypwd postgres # rstudioの環境 sudo docker run -d --name=rstudio -p 8787:8787 rocker/hadleyverse
それではシェルスクリプトを実行します。
$ sh rpostgres.sh
10分とかからずインストールは終了したかと思います。念のためコンテナが動いているか確認します。
$ sudo docker ps -a
2つのコンテナともstatusはupで大丈夫のようです。
ホストマシン(僕はWindows)のブラウザにDockerをインストールした[IPアドレス]とポート[8787]と入力します。
例)192.168.0.5:8787
UsernameとPasswordは共にrstudioです。接続できたら新規ファイルを作成。
新規ファイルに下記のスクリプトをコピペしてください。
install.packages("RPostgreSQL") library("RPostgreSQL") con <- dbConnect(PostgreSQL(), host="192.168.0.5", # 自分の環境のIPアドレスを入力 user= "postgres", password="mypwd") dbSendQuery(con, "CREATE DATABASE r_test;")
一番上の行からrstudioのRunボタンで実行してみてください。
- まずRPostgreSQLパッケージをインストール
- パッケージを読み込み
- Connectionオブジェクトを作成
- オブジェクトにクエリを投げて実行します。(r_testというデータベースを作成)
これでつながりました。
確認も兼ねて、GUIのクライアントツールもインストールしてみましょう。
pgAdmin4 : https://www.pgadmin.org/download/windows.php
r_testというデータベースが確認できました。
つながらないときは、プロパティを確認してみましょう。
一応、別の方法でも。
仮想マシンの端末からpostgresコンテナ内に入り、コマンドで確認します。
$ sudo docker exec -it postgres bash # psql -U postgres r_test r_test=# \det+
空っぽのデータベースが見えました。大丈夫そうです。
あとはPostgreSQLの勉強をして、大好きなrstudioからガンガンSQLを流し込みましょう。
参考: