Dockerで環境構築 #
postgres公式のdockerイメージを利用する。
🔗https://hub.docker.com/_/postgres/
docker run --name test-postgres -p 127.0.0.1:55552:5432 -e POSTGRES_PASSWORD=password -d postgres
でpostgresのdockerコンテナを作成&起動。
コンテナの5432ポートをホストの55552にマップしている。
後はpsqlで接続して好きなことをすればok。
一応書いておくが、コンテナが止まった際に再スタートしたい場合はdocker ps -a
でコンテナ一覧からpostgresのコンテナを見つけ出して、コンテナのIDをコピーして、docker start CONTAINER_ID
で起動できる。
psqlメモ #
接続 #
psql -h localhost -U postgres -d postgres -p 55552
-h
: host
-d
: データベース
-p
: ポート
便利 #
\x
でクエリの結果を読みやすい形式で表示する設定をOnOffできる。
基本的な情報を取得 #
+
を後ろにつけると詳細表示。
\d
: テーブル, view, sequence一覧
\d table_name
で個別のテーブルを詳細表示。\l
: DB一覧\dt
: テーブル一覧
\?
で一覧が出てくるので一度確認しておいたほうが良い。
ローカルのSQLファイルを読み込んで実行 #
-f
, --file
オプションで可能
psql -h localhost -U postgres -d postgres -p 55552 -f run.sql
もしくは接続後にシェル上で\i
, \ir
を使うこともできる。(こっちの方が便利かな?)
詳細はシェルのhelp(\?
)参照。
トランザクション&ロールバック #
練習でもDBがめちゃくちゃになると面倒なのでトランザクションを張りたいときがある。
🔗https://www.postgresql.org/docs/current/tutorial-transactions.html
🔗BEGIN
🔗COMMIT
🔗ROLLBACK
一応簡単に説明しておくと、
BEGIN; -- トランザクション開始
INSERT ... ; -- 書き込み
SELECT ... -- 書き込み結果確認
-- あ、ミスってた。 もとに戻したい。
ROLLBACK; -- BEGIN後の変更を全て破棄(BEGIN時の状態にロールバック)
といった使い方ができる。
変更を確定させる場合COMMIT;
してあげればok。
クエリの実行時間計測 #
\timing
で計測をオンにできる。
オンの状態でクエリを普通に実行すれば勝手に計測してくれる。