PostgreSQL: MySQL の SHOW CREATE DATABASE の代わりになるもの

私の知る限りにおいて、PostgreSQL のコンソールであるデータベースの CREATE DATABASE 文を知る方法はない。すなわち、MySQL コンソールの SHOW CREATE DATABASE コマンドに対応するコマンドはない。

しかし、代わりに次のようなコマンドを実行すればよい:

sudo -u postgres pg_dump --schema-only --create db0 \
| grep "CREATE DATABASE"

あるいは、もっと簡潔に

sudo -u postgres pg_dump -s -C db0 | grep "CREATE DATABASE"

ただし、db0 はデータベース名の例であるので、適宜変更する。

pg_dump はデータベースをダンプするコマンドである。--schema-only または -s オプションを付けると、テーブルやインデックスなどの「スキーマ定義」だけがダンプされる。--create オプションまたは -C オプションを付けると、ダンプの中に CREATE DATABASE 文が書き込まれる。それを grep コマンドで抜き出している。

結果として、ターミナルには次のような結果が出力される。

CREATE DATABASE db0 WITH TEMPLATE = template0 ENCODING = 'UTF8' 
LC_COLLATE = 'ja_JP.UTF-8' LC_CTYPE = 'ja_JP.UTF-8';