pgclimb コマンドで簡単にレポート作成


pgclimb とは

PostgreSQL データベースに psql コマンドで接続してレポートを作るとなると、"\o [ファイル名]" で出力をスプールしてファイル出力していますよね。

しかしここで紹介する pgclimb を使えば psql コマンドを使わずとも CSV や JSON、XML、EXCEL ファイルを作成できます。





通常 psql コマンドでクエリーを叩くと次のような結果が表示されます。
=> SELECT * FROM pg_language ;
 lanname  | lanispl | lanpltrusted | lanplcallfoid | lanvalidator | lanacl 
----------+---------+--------------+---------------+--------------+--------
 internal | f       | f            |             0 |         2246 | 
 c        | f       | f            |             0 |         2247 | 
 sql      | f       | t            |             0 |         2248 | 
 plpgsql  | t       | t            |        148331 |       148332 | 
 plperl   | t       | t            |       1461356 |      1461357 | 
(5 rows)

また psql コマンドで出力内容を CSV ファイルなどに出力するために以下のように "\o [ファイル名]" としていますよね。これって結構面倒です。
=> \pset format unaligned
Output format is unaligned.
=> \pset fieldsep ','
Field separator is ",".
=> \o result.csv
=> SELECT * FROM pg_language ;
=> \o


pgclimb ツールの導入

では pgclimb コマンドをダウンロードしましょう。ここでは Linux x86_64 の場合です。
$ wget -O pgclimb https://github.com/lukasmartinelli/pgclimb/releases/download/v0.2/pgclimb_linux_amd64
$ chmod +x pgclimb

$ ./pgclimb --help


pgclimb コマンドを実行

では早速先程実行したクエリーを pgclimb を使って CSV 形式と jsonlines という形式で出力してみましょう。

まずは CSV 形式での出力方法です。
$ ./pgclimb --host hogehoge -p 5432 -U pikachu -c "SELECT * FROM pg_language" csv
internal,0,2246
c,0,2247
sql,0,2248

次に jsonlines という形式での出力方法です。
$ ./pgclimb --host hogehoge -p 5432 -U pikachu -c "SELECT * FROM pg_language" jsonlines                     
{"lanacl":null,"lanispl":false,"lanname":"internal","lanplcallfoid":0,"lanpltrusted":false,"lanvalidator":2246}
{"lanacl":null,"lanispl":false,"lanname":"c","lanplcallfoid":0,"lanpltrusted":false,"lanvalidator":2247}
{"lanacl":null,"lanispl":false,"lanname":"sql","lanplcallfoid":0,"lanpltrusted":true,"lanvalidator":2248}

また結果を画面に表示するのではなく、直接ファイルに保存したい場合には次のようにします。ここでは EXCEL ファイルに結果を保存してみます。
$ ./pgclimb --host hogehoge -p 5432 -U pikachu -c "SELECT * FROM pg_language" --output hoge.xlsx xlsx --sheet "pg_language_result"

その結果、"hoge.xlsx" という EXCEL ファイルが作成され、EXCEL シート名は "pg_language_result" となっているのが確認できると思います。