最近pgAdminだけでなくpsqlも使い始めて知ったこと。\! clsで出来ました。任意のコマンドを実行する \! に、コマンドプロンプト一般でのコンソールクリアCLSを続ける形。Linux(というかbash)でのCtrl+Lに比べ面倒ですが、出来ないより遥かにいいです。関連情報も少し加えてメモ。

»PostgreSQL 9.4.0文書: psql -- PostgreSQLの対話的ターミナル
\! [ command ]

別のシェルを起動するか、もしくは、Unixのコマンドcommandを実行します。 引数はこれ以上解釈されず、そのままシェルに渡されます。 特に、変数置換規則やバックスラッシュエスケープは適用されません。

\!CMD /Cと同じで、CLSだけでなくDIRとかIPCONFIGとかのコマンドをpsqlの中で実行できます(下はDIRの例)。あとcalc、charmap、mspaint、notepadなどGUIアプリも、実行ファイルにパスが通っていれば起動可能。「ファイルを指定して実行」の代わりになります。


WindowsのシェルでCtrl+Lを使えるようにしても、psqlでは無理っぽい
今回、Windows 7 32bitNYAOSMSysGitGit BASHおよびClink(コマンドプロンプト拡張ツール)の三つを試し、いずれも普通のシェル上ではCtrl+LでコンソールクリアできましたがWinpsqlではできず残念。仮想環境のCentOS 6.6に入れたPostgreSQL 9.5devpsqlではできるので、psqlの内部的な違いのようです。どうしてもWinpsqlCtrl+Lしたくなったら、先月のpgAdminと同様にAutoHotkeyを使うかも。

Windows用のいろいろなシェルを調べる中で、外側(見た目とインターフェイス)を変えるツールも結構たくさんあると知り、
ckw-modConEmuそれからCmderを使ってみました。後の2つは、上で書いたClinkを同梱。4月半ばから今まではConsole2を常用してきましたが(参考:前ブログの記事)、Cmderの方が良いかもしれないと思う点があり、もう少し検討して記事にします。


WindowspsqlCtrl+Cは、終了コマンドにもなるので注意
psqlでクエリ結果などが1画面に収まらない時は、一番下に「--More--」と出て、リターンで次の1行を表示、スペースで次の1画面を表示し、これ以上表示せずコマンド入力に戻る場合はCtrl+Cを打ちます。ここまではWin版も同じ。ところが、うっかりCtrl+Cを連続打鍵した場合、CentOSでは ↓ のように何も起きない一方、Windowsではコマンド\qと同じ扱いでpsqlが終了するので、焦っている時は注意です。というか先日のアンカンファレンスの準備中に何度もやってしまいムキーッ!ってなりました。。。

3種類あるpsqlのヘルプコマンド
まずhelpと打つと ↓5つだけ。この中で\h\?があると分かりますが、どっちがどっちか、まだ覚えられません。

\hは、psqlに限らずPostgreSQLへのクエリ全般で使えるSQLコマンドの一覧が出ます。えっそれだけ……ではなく、「\h コマンド名」と入力すると(二つ目の画像)当該コマンドの簡易リファレンスが出ます。これは便利♪ Rコンソールでの「?関数名」と似てます。

\?は、psqlで使えるメタコマンド(\■■)のヘルプ。下の画面はPostgreSQL 9.5dev同梱のpsqlのもので、2ブロック目Helpを見ると「\? メタコマンド/オプション/変数」で指定できるようですが、現在は未実装でした。9.4WinpsqlにはHelpブロック自体がないので、これは9.5から追加される機能かもしれません。