この記事はPostgreSQL Advent Calendar 2017の12日目の記事です。

定義がどうとかはおいておいて
test=# create table  test_tbl  (id serial primary key, name varchar(20) unique, note text);
CREATE TABLE
test=# insert into test_tbl (name) values ('山本');
INSERT 0 1
test=# select * FROM test_tbl;
 id | name | note
----+------+------
  1 | 山本 |
(1 row)
上のtest_tbl.noteってNULLか空だかわからないんですよねえ。
僕は非正規会員ながらNULL撲滅委員会に入ってるのでそのあたり気になるわけです。
その場合は\psetらへんでできるわけなんですが
test=# \pset null '[NULL]'
Null display is "[NULL]".
test=# SELECT * FROM test_tbl;
 id | name |  note
----+------+--------
  1 | 山本 | [NULL]
(1 row)
毎回セットするわけにはいかないので、psqlrcを使いましょうって話です。
サンプルとして、私が自分の環境で使ってるpsqlrcの内容です。
$ cat ~/.psqlrc
\set QUIET 1
\timing
\x auto
\set PROMPT1 '%[%033[1m%]%M %n@%/%R%[%033[0m%]%# '
\set PROMPT2 '[more] %R > '
\pset null '[NULL]'
\set VERBOSITY verbose
\set HISTFILE ~/.psql_history- :DBNAME 
\set HISTCONTROL ignoredups
\set COMP_KEYWORD_CASE upper

\unset QUIET
一行づつ説明します。
  • \set QUIET 1 ... QUIET変数に対して1をセット=有効ににして起動時にQUIETモードで起動して、デフォルトでは表示されるWELCOMメッセージとかを抑制します。
  • \timing ... ご存知そのクエリの実行時間を出力
  • \x auto ... クエリ結果をexpandモードにするかデフォルトのままにするかを自動にする。そうみたくない!ってことも多いので、あとから\xって叩いて結局自分で調整することもままある
  • PROMPT ... プロンプト文字列を制御。このあたりを参照。
  • \set VERBOSITY verbose ... 詳しいメッセージを表示するように設定。
  • \set HISTFILE ~/.psql_history- :DBNAME ... 履歴フィアルをDBごとに作る
  • \set HISTCONTROL ignoredups ... 同じコマンドは履歴とらない
  • \set COMP_KEYWORD_CASE upper ... クエリ文字列を大文字に変換
これを適用して、SELECTを投げるとこんな感じになります。
192.168.33.10 postgres@test=# SELECT * FROM test_tbl;
 id | name |  note
----+------+--------
  1 | 山本 | [NULL]
(1 row)

Time: 1.608 ms
192.168.33.10 postgres@test=#
githubで [ awesome postgres ] とかで検索するとその人の設定とかも出てくると思うので暇な時とかみるのおすすめです。
因みに、あまり複数人で触るサーバで.psqlrc設定するのはあまりおすすめしません。
あくまで自分の環境だけにしておきましょう。

明日は喜田さん(2回目)です!

Add Comments

名前
 
  絵文字
 
 
プロフィール

john_doe_

Twitter
instagram(SnapWidget)
タグクラウド
  • ライブドアブログ