
Contents
実行環境
- Windows 7 64
bit - PostgreSQL 9.5 RC
1(zip 版からバッチファイルで起動) - コマンドプロンプトの代わりにConEmu 151208 + psql
参考リンク
- PostgreSQL 9.5rc1 Documentation : psql
- How To Customize the PostgreSQL Prompt with psqlrc on Ubuntu 14.04
- Improving the Command-Line Postgres Experience
- Yakst : PostgreSQL
のコマンドラインの動きを改善してみる(上の翻訳)
プロンプト(クエリの左側)を消すメタコマンド
参考リンクにあるとおり、メタコマンド\set PROMPT1 '' \set PROMPT2 ''
これで複数行クエリのコピペが便利になりました。下の画像


接続先データベースの確認はメタコマンド

psql の設定ファイル(psqlrc)を、psql 起動バッチファイルに一体化する
プロンプトの消し方は分かったものの、その都度メタコマンドを:: 環境変数 psqlrc に、一時ファイルのパスを入れる set psqlrc=psqlrc_tmp :: psqlrc に書く内容を、一行ずつ一時ファイルに書き込む echo \set PROMPT1 '' > %psqlrc% echo \set PROMPT2 '' >> %psqlrc% :: あとは psql を起動するだけ. 接続先などもここで設定 psql -U postgres :: psql 終了後、一時ファイルを消す del "%psqlrc%"
psql の設定ファイルには、起動時メッセージやクエリ実行も書ける
今回のきっかけ「プロンプトを消す」に限らず、psql- \echo
で起動時メッセージ表示 - クエリを書いて
psql 起動時に実行 - \set, \pset
などで環境設定(下記は一例)
\set QUIET on \pset format unaligned \pset tuples_only \timing on
というわけで今回作ったバッチファイルは ↓ のとおり。最初に環境変数で
@echo off set pgbin=D:/AppsPortable/PostgreSQL/9.5.0_rc1/bin/ set psqlrc=psqlrc_tmp echo. echo \echo %pgbin%psql.exe > %psqlrc% echo \set PROMPT1 '' >> %psqlrc% echo \set PROMPT2 '' >> %psqlrc% echo \pset border 2 >> %psqlrc% echo select version() as "sever version"; >> %psqlrc% "%pgbin%psql" -U postgres del "%psqlrc%"
↓ バッチファイルを適当な場所に置いて実行した様子。ここでは事前にコンソールを立ち上げて実行してますが、主にエクスプローラからダブルクリックで直接実行する想定です。
R:\>psql_start.bat :: バッチファイルに書いたメッセージ表示、環境設定、クエリが実行される D:/AppsPortable/PostgreSQL/9.5.0_rc1/bin/psql.exe Border style is 2. +--------------------------------------------------------------+ | sever version | +--------------------------------------------------------------+ | PostgreSQL 9.5rc1, compiled by Visual C++ build 1800, 64-bit | +--------------------------------------------------------------+ (1 row) :: ここから psql のシェルが始まる psql (9.5rc1) Type "help" for help. :: いつも通りクエリを書く select now(); +-------------------------------+ | now | +-------------------------------+ | 2016-01-03 20:37:00.150059+09 | +-------------------------------+ (1 row) :: 終了は \q で. Ctrl-C だと「バッチファイルを終了しますか」と聞かれる \q R:\>

データベースや環境設定ごとに起動用バッチを作ると便利かも
今回は接続先ホスト・データベースはデフォルトのままでしたが、バッチファイルのところで、psql
@echo off set pgbin=D:/AppsPortable/PostgreSQL/9.5.0_rc1/bin/ set psqlrc=psqlrc_tmp echo select version() as "sever version"; > %psqlrc% echo select pg_sleep(1); >> %psqlrc% echo \q >> %psqlrc%<- この行は無効 "%pgbin%psql" -U postgres del "%psqlrc%"

まぁ仮に