SlideShare a Scribd company logo
1 of 18
Download to read offline
psql の起動画面

ぬこ@横浜 (@nuko_yokohama)
自己紹介
「ぬこ@横浜」で検索
ラーメンの食べ歩きと
無駄な PostgreSQL 拡張を考えるのが趣味
漢数字型とか、
neo4j_fdw とか
ゆるい全文検索拡張とか
psql 上の数当てとか
この話は
PostgreSQL 9.3 の
新機能とは
一切関係ありません
しかし、 psql は
PostgreSQL 男子 / 乙女
のたしなみ
psql といえども
色々試してみると
新しい発見が
あるものです
psql には起動時に読み込まれ
実行されるスクリプトファイル
が存在している。
.pgsqlrc ファイルがそれだ
このファイルは単なる psql の
設定を記述するだけでなく
任意の SQL が記述できる。
つまり SQL で出来ることなら
なんでもできる
で、 SQL が発行できる、
すなわち任意の EXTENSION
が実行できるということなので
実質上、 C 言語で出来ること
は大抵できる。
ま、それはそうなんだが、
あまり何でも出来過ぎるのも
面白くないというもの。
実は libcurl を使った EXTENSION を作って
気象庁のページにリクエストを送って
PostgreSQL 起動時に横浜の天気予報を出すというのも
作ろうとしたのだが、出来て当たり前なのでつまらぬ。
ということで、今回は
EXTENSION に頼らず
psql/SQL で出来る範囲で
起動画面をカスタマイズ
してみた
基本編
起動メッセージを追加する
単純なメッセージは
echo で OK
set QUIET on
pset tuples_only on
pset format unaligned
echo ' .oooooo.
ooooooooo.
.o.
.oooooo.
ooooo
oooooooooooo
echo ' d8P'' `Y8b `888
`Y88.
.888.
d8P'' `Y8b `888''
`888''
`8
echo '888
888 888
.d88''
.8"888.
888
888
888
echo '888
888 888ooo88P''
.8'' `888.
888
888
888oooo8
echo '888
888 888`88b.
.88ooo8888.
888
888
888
"
echo '`88b
d88'' 888 `88b.
.8''
`888. `88b
ooo
888
o 888
o
echo ' `Y8bood8P'' o888o o888o o88o
o8888o `Y8bood8P'' o888ooooood8 o888ooooood8
echo ''
pset tuples_only off
pset format aligned
set QUIET off

.o

.oooo.
'
o888 .dP""Y88b
'
888
]8P'' .ooooo. '
888
.d8P'' d88'' `"Y8 '
888
.dP''
888
'
888 .oP
.o 888
.o8 '
o888o 8888888888 `Y8bod8P'' '
応用編
起動メッセージをランダムに
表示する
Random なメッセージは
SELECT 文 で OK
set QUIET on
CREATE OR REPLACE FUNCTION __foo() RETURNS TEXT AS $$
SELECT
CASE value
WHEN 0 THEN
' お前それ PGCon でも同じ事言えんの? '
WHEN 1 THEN
' イイプランダナー '
(省略)
WHEN 9 THEN
E' 神は言っている --- ここで Nestedloop すべきではないと '
ELSE
' 全てが終わったな・・・ '
END
FROM (SELECT round(random() * 10 )as value) as rnd;
$$ LANGUAGE sql;
pset tuples_only on
SELECT __foo() AS " 神のお告げ ";
pset tuples_only off
DROP FUNCTION __foo();
set QUIET off
完結編
波動エネルギーで
psql を起動する
! コマンドを使って
シェルコマンドを実行する
set QUIET on
pset tuples_only on
pset format unaligned
! echo ""
! echo " 波動エネルギー、充填! "
! echo "0
50
100"
! echo "--------------------"
! echo "##"
! sleep 0.1;
! echo "^[[1A####"
! sleep 0.2;
! echo "^[[1A######"
(略)
! sleep 0.9;
! echo "^[[1A########################"
! sleep 1.0;
! echo "psql "
! sleep 1.5;
! echo "^[[1Apsql 起動! "
! echo ""
pset tuples_only off
pset format aligned
set QUIET off
ということで、
改めて psql のドキュメントを
眺めると色々発見があるなあと
改めて思ったのでした。
役に立つかどうかは別として
おしまい

More Related Content

What's hot

ぼくがかんがえたさいきょうの☆きっくすたーと☆
ぼくがかんがえたさいきょうの☆きっくすたーと☆ぼくがかんがえたさいきょうの☆きっくすたーと☆
ぼくがかんがえたさいきょうの☆きっくすたーと☆Naoya Nakazawa
 
TddでFizzBuzzしてみる in Swift
TddでFizzBuzzしてみる in SwiftTddでFizzBuzzしてみる in Swift
TddでFizzBuzzしてみる in SwiftShoichi Matsuda
 
第一回サーバー勉強友の会
第一回サーバー勉強友の会第一回サーバー勉強友の会
第一回サーバー勉強友の会Takahashi Tomohiko
 
第二回サーバー勉強友の会
第二回サーバー勉強友の会第二回サーバー勉強友の会
第二回サーバー勉強友の会Takahashi Tomohiko
 
LT#7 Hello coffeeしてきた
LT#7 Hello coffeeしてきたLT#7 Hello coffeeしてきた
LT#7 Hello coffeeしてきたShingo Inoue
 
無料でマストドンインスタンスを運用するには
無料でマストドンインスタンスを運用するには無料でマストドンインスタンスを運用するには
無料でマストドンインスタンスを運用するにはyowasou
 
Programming camp code reading
Programming camp code readingProgramming camp code reading
Programming camp code readingHiro Yoshioka
 
MongoDBCSharp
MongoDBCSharpMongoDBCSharp
MongoDBCSharpytanno
 
第1回鹿児島node.jsの会資料_内村
第1回鹿児島node.jsの会資料_内村第1回鹿児島node.jsの会資料_内村
第1回鹿児島node.jsの会資料_内村Koichi Uchimura
 
Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)
Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)
Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)Hiro H.
 
今日からはじめるVim入門
今日からはじめるVim入門今日からはじめるVim入門
今日からはじめるVim入門Yuta Ogura
 
サバフェスLt
サバフェスLtサバフェスLt
サバフェスLt宗 大栗
 
VBScriptのダメなところ~その1~
VBScriptのダメなところ~その1~VBScriptのダメなところ~その1~
VBScriptのダメなところ~その1~bouzuya
 

What's hot (18)

ぼくがかんがえたさいきょうの☆きっくすたーと☆
ぼくがかんがえたさいきょうの☆きっくすたーと☆ぼくがかんがえたさいきょうの☆きっくすたーと☆
ぼくがかんがえたさいきょうの☆きっくすたーと☆
 
TddでFizzBuzzしてみる in Swift
TddでFizzBuzzしてみる in SwiftTddでFizzBuzzしてみる in Swift
TddでFizzBuzzしてみる in Swift
 
第一回サーバー勉強友の会
第一回サーバー勉強友の会第一回サーバー勉強友の会
第一回サーバー勉強友の会
 
第二回サーバー勉強友の会
第二回サーバー勉強友の会第二回サーバー勉強友の会
第二回サーバー勉強友の会
 
LT#7 Hello coffeeしてきた
LT#7 Hello coffeeしてきたLT#7 Hello coffeeしてきた
LT#7 Hello coffeeしてきた
 
20110205.linux 0.01
20110205.linux 0.0120110205.linux 0.01
20110205.linux 0.01
 
読書会開催提案
読書会開催提案読書会開催提案
読書会開催提案
 
無料でマストドンインスタンスを運用するには
無料でマストドンインスタンスを運用するには無料でマストドンインスタンスを運用するには
無料でマストドンインスタンスを運用するには
 
Programming camp code reading
Programming camp code readingProgramming camp code reading
Programming camp code reading
 
Aodag scaffold
Aodag scaffoldAodag scaffold
Aodag scaffold
 
MongoDBCSharp
MongoDBCSharpMongoDBCSharp
MongoDBCSharp
 
第1回鹿児島node.jsの会資料_内村
第1回鹿児島node.jsの会資料_内村第1回鹿児島node.jsの会資料_内村
第1回鹿児島node.jsの会資料_内村
 
Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)
Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)
Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)
 
今日からはじめるVim入門
今日からはじめるVim入門今日からはじめるVim入門
今日からはじめるVim入門
 
サバフェスLt
サバフェスLtサバフェスLt
サバフェスLt
 
VBScriptのダメなところ~その1~
VBScriptのダメなところ~その1~VBScriptのダメなところ~その1~
VBScriptのダメなところ~その1~
 
NanoStrand
NanoStrandNanoStrand
NanoStrand
 
nextl enju 56
nextl enju 56nextl enju 56
nextl enju 56
 

More from Toshi Harada

無駄にNeo4jを使っている日々
無駄にNeo4jを使っている日々無駄にNeo4jを使っている日々
無駄にNeo4jを使っている日々Toshi Harada
 
Pgunconf14 pg13-psql
Pgunconf14 pg13-psqlPgunconf14 pg13-psql
Pgunconf14 pg13-psqlToshi Harada
 
20190518 27th-chugoku db-lt-pg12
20190518 27th-chugoku db-lt-pg1220190518 27th-chugoku db-lt-pg12
20190518 27th-chugoku db-lt-pg12Toshi Harada
 
20190202-pgunconf-Access-Privilege-Inquiry-Functions
20190202-pgunconf-Access-Privilege-Inquiry-Functions20190202-pgunconf-Access-Privilege-Inquiry-Functions
20190202-pgunconf-Access-Privilege-Inquiry-FunctionsToshi Harada
 
20190119 aws-study-pg-extension
20190119 aws-study-pg-extension20190119 aws-study-pg-extension
20190119 aws-study-pg-extensionToshi Harada
 
20181122 pg con-jp-lt-logrep
20181122 pg con-jp-lt-logrep20181122 pg con-jp-lt-logrep
20181122 pg con-jp-lt-logrepToshi Harada
 
20181110 fok2018-pg-extension
20181110 fok2018-pg-extension20181110 fok2018-pg-extension
20181110 fok2018-pg-extensionToshi Harada
 
20171106 ntt-tx-postgre sql-10
20171106 ntt-tx-postgre sql-1020171106 ntt-tx-postgre sql-10
20171106 ntt-tx-postgre sql-10Toshi Harada
 
20171103 pg con-jp-lt-plpgsql
20171103 pg con-jp-lt-plpgsql20171103 pg con-jp-lt-plpgsql
20171103 pg con-jp-lt-plpgsqlToshi Harada
 
20171028 osc-nagaoka-postgre sql-10
20171028 osc-nagaoka-postgre sql-1020171028 osc-nagaoka-postgre sql-10
20171028 osc-nagaoka-postgre sql-10Toshi Harada
 
20170819 ocd-l tthon-pgdev
20170819 ocd-l tthon-pgdev20170819 ocd-l tthon-pgdev
20170819 ocd-l tthon-pgdevToshi Harada
 
Ntt tx-study-postgre sql-10
Ntt tx-study-postgre sql-10Ntt tx-study-postgre sql-10
Ntt tx-study-postgre sql-10Toshi Harada
 
Jpug study-postgre sql-10-pub
Jpug study-postgre sql-10-pubJpug study-postgre sql-10-pub
Jpug study-postgre sql-10-pubToshi Harada
 
Chugoku db 20th-postgresql-10-pub
Chugoku db 20th-postgresql-10-pubChugoku db 20th-postgresql-10-pub
Chugoku db 20th-postgresql-10-pubToshi Harada
 
Pgconf asia-201612203-pg reversi-ja
Pgconf asia-201612203-pg reversi-jaPgconf asia-201612203-pg reversi-ja
Pgconf asia-201612203-pg reversi-jaToshi Harada
 
Pgconf asia-201612203-pg reversi
Pgconf asia-201612203-pg reversiPgconf asia-201612203-pg reversi
Pgconf asia-201612203-pg reversiToshi Harada
 
Kof2016 postgresql-9.6
Kof2016 postgresql-9.6Kof2016 postgresql-9.6
Kof2016 postgresql-9.6Toshi Harada
 
Chugoku db 17th-lt-kly
Chugoku db 17th-lt-klyChugoku db 17th-lt-kly
Chugoku db 17th-lt-klyToshi Harada
 
Chugoku db 17th-postgresql-9.6
Chugoku db 17th-postgresql-9.6Chugoku db 17th-postgresql-9.6
Chugoku db 17th-postgresql-9.6Toshi Harada
 

More from Toshi Harada (20)

無駄にNeo4jを使っている日々
無駄にNeo4jを使っている日々無駄にNeo4jを使っている日々
無駄にNeo4jを使っている日々
 
Pgunconf16 toast
Pgunconf16 toastPgunconf16 toast
Pgunconf16 toast
 
Pgunconf14 pg13-psql
Pgunconf14 pg13-psqlPgunconf14 pg13-psql
Pgunconf14 pg13-psql
 
20190518 27th-chugoku db-lt-pg12
20190518 27th-chugoku db-lt-pg1220190518 27th-chugoku db-lt-pg12
20190518 27th-chugoku db-lt-pg12
 
20190202-pgunconf-Access-Privilege-Inquiry-Functions
20190202-pgunconf-Access-Privilege-Inquiry-Functions20190202-pgunconf-Access-Privilege-Inquiry-Functions
20190202-pgunconf-Access-Privilege-Inquiry-Functions
 
20190119 aws-study-pg-extension
20190119 aws-study-pg-extension20190119 aws-study-pg-extension
20190119 aws-study-pg-extension
 
20181122 pg con-jp-lt-logrep
20181122 pg con-jp-lt-logrep20181122 pg con-jp-lt-logrep
20181122 pg con-jp-lt-logrep
 
20181110 fok2018-pg-extension
20181110 fok2018-pg-extension20181110 fok2018-pg-extension
20181110 fok2018-pg-extension
 
20171106 ntt-tx-postgre sql-10
20171106 ntt-tx-postgre sql-1020171106 ntt-tx-postgre sql-10
20171106 ntt-tx-postgre sql-10
 
20171103 pg con-jp-lt-plpgsql
20171103 pg con-jp-lt-plpgsql20171103 pg con-jp-lt-plpgsql
20171103 pg con-jp-lt-plpgsql
 
20171028 osc-nagaoka-postgre sql-10
20171028 osc-nagaoka-postgre sql-1020171028 osc-nagaoka-postgre sql-10
20171028 osc-nagaoka-postgre sql-10
 
20170819 ocd-l tthon-pgdev
20170819 ocd-l tthon-pgdev20170819 ocd-l tthon-pgdev
20170819 ocd-l tthon-pgdev
 
Ntt tx-study-postgre sql-10
Ntt tx-study-postgre sql-10Ntt tx-study-postgre sql-10
Ntt tx-study-postgre sql-10
 
Jpug study-postgre sql-10-pub
Jpug study-postgre sql-10-pubJpug study-postgre sql-10-pub
Jpug study-postgre sql-10-pub
 
Chugoku db 20th-postgresql-10-pub
Chugoku db 20th-postgresql-10-pubChugoku db 20th-postgresql-10-pub
Chugoku db 20th-postgresql-10-pub
 
Pgconf asia-201612203-pg reversi-ja
Pgconf asia-201612203-pg reversi-jaPgconf asia-201612203-pg reversi-ja
Pgconf asia-201612203-pg reversi-ja
 
Pgconf asia-201612203-pg reversi
Pgconf asia-201612203-pg reversiPgconf asia-201612203-pg reversi
Pgconf asia-201612203-pg reversi
 
Kof2016 postgresql-9.6
Kof2016 postgresql-9.6Kof2016 postgresql-9.6
Kof2016 postgresql-9.6
 
Chugoku db 17th-lt-kly
Chugoku db 17th-lt-klyChugoku db 17th-lt-kly
Chugoku db 17th-lt-kly
 
Chugoku db 17th-postgresql-9.6
Chugoku db 17th-postgresql-9.6Chugoku db 17th-postgresql-9.6
Chugoku db 17th-postgresql-9.6
 

Psql起動画面(修正版)