5
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

PostgreSQL 9.5新機能 psqlからのAsciiDoc形式出力を試してみた

Last updated at Posted at 2015-08-21

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というファイルができているのでブラウザで見てみると...

HTML変換結果.png

( ・∀・)つ〃∩ ヘェーヘェーヘェー

AsciiDocからPDFへの変換

$ a2x output.adoc

HTMLの時よりも少し時間がかかって、output.pdfというファイルが出来ます。
これをPDFビューアで見ると...

PDF変換結果1.png

ええっ、変更履歴!?

PDF変換結果2.png

さらに目次?!

PDF変換結果3.png

w( ̄Д ̄;)wスゲー

まとめ

psqlからのAsiiDoc出力、予想以上に使えそうです。
技術テキスト書いているときに役立ちそうですね。

5
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?