PostgreSQL 9.5で実装される小ネタの紹介です。
PostgreSQLのクライアントであるpsqlの出力結果をAsciiDoc形式で出せるようになりました。
今回使ったバージョンは、つい最近リリースされたPostgreSQL 9.5alpa2です。
AsciiDocとは
AsciiDocとはMarkdownのようなマークアップ言語で、HTMLやPDF、ePUBなどの多様なフォーマットに変換することができます。
軽量TeXのような印象です。
実際AsciiDocをインストールする際にTexLiveがインストールされているので、内部的にはTeXを利用しているようです。
細かい記法とか全然わかっていません(^_^;;)
今回は、私が記法を知らなくてもpsqlさんが出力してくれるので見逃してください。
AsciiDocのインストール方法 @ CentOS7
yumでインストールできます。便利ですねー
# yum install asciidoc asciidoc-doc asciidoc-latex
TeX関連で300弱のパッケージがインストールされるので少し重たいです。
また、AsciiDocからPDFを作成するためにApache FOPもインストールします。
# yum install fop
psqlでのAsciidoc出力方法
\pset
メタコマンドでformatオプションを指定します。
postgres=# \pset format asciidoc
Output format is asciidoc.
これで以降のクエリ結果がAsciiDoc形式で出力されます。
適当にテーブルを作ってクエリ結果を出してみます。
postgres=# CREATE TABLE foo (a int PRIMARY KEY, b text);
CREATE TABLE
postgres=# INSERT INTO foo VALUES ( generate_series(1,100), 'inserted');
INSERT 0 100
ostgres=# SELECT * FROM foo WHERE mod(a,7) = 3;
[options="header",cols=">l,<l",frame="none"]
|====
^l|a ^l|b
|3 |inserted
|10 |inserted
|17 |inserted
|24 |inserted
|31 |inserted
|38 |inserted
|45 |inserted
|52 |inserted
|59 |inserted
|66 |inserted
|73 |inserted
|80 |inserted
|87 |inserted
|94 |inserted
|====
....
(14 rows)
....
(´・∀・`)ヘー
このままだと私がよく分からないので、HTMLとPDFに変換してみます。
そのために、クエリ結果をファイルに保存しておきます。
psqlの\o
メタコマンドを使って出力先ファイルを指定します。
postgres=# \o /home/postgres/output.adoc
postgres=# SELECT * FROM foo WHERE mod(a,7) = 3;
これでOK。
AsciiDocからHTMLへの変換
$ asciidoc output.adoc
output.htmlというファイルができているのでブラウザで見てみると...
( ・∀・)つ〃∩ ヘェーヘェーヘェー
AsciiDocからPDFへの変換
$ a2x output.adoc
HTMLの時よりも少し時間がかかって、output.pdfというファイルが出来ます。
これをPDFビューアで見ると...
ええっ、変更履歴!?
さらに目次?!
w( ̄Д ̄;)wスゲー
まとめ
psqlからのAsiiDoc出力、予想以上に使えそうです。
技術テキスト書いているときに役立ちそうですね。