vsql のプロンプト表示を変更する方法をご紹介します。
プロンプトに任意の文字列、OS コマンドの実行結果、時刻等を表示することにより、vsql での作業効率を向上させることができます。
プロンプトの種類
vsql に用意されているプロンプトには以下の種類があります。
| PROMPT1 | 新規コマンド行(1行目)で使用されるプロンプト表示 |
| PROMPT2 | コマンドが複数行にわたる場合の2行目以降で使用されるプロンプト表示 |
| PROMPT3 | COPYコマンドのデータ読み込み元に標準入力(stdin)を指定した際に使用されるプロンプト表示 |
プロンプトの設定方法とパラメータ
現在の設定の確認
現在のプロンプトの設定を確認するには vsql 上で \set コマンドを使用します。
kkadb=> \set
VERSION = 'vsql'
AUTOCOMMIT = 'off'
VERBOSITY = 'default'
PROMPT1 = '%/%R%# ' <=★
PROMPT2 = '%/%R%# ' <=★
PROMPT3 = '>> ' <=★
ROWS_AT_A_TIME = '1000'
DBNAME = 'kkadb'
USER = 'kkauser'
HOST = 'kkasvr1'
PORT = '5433'
LOCALE = 'en_US@collation=binary'
HISTSIZE = '500'設定方法
プロンプトの設定は \set コマンドを使用して行います。
\set プロンプト番号 ‘パラメータ’
[変更例]
kkadb=> \set PROMPT1 '%n%R%# 'パラメータ
プロンプトに指定できる主なパラメータは以下の通りです。
| パラメータ | 説明 | 備考 |
|---|---|---|
| %M | ホスト名(ドメイン名含む) | 以下のいずれかの場合のみ有効 ・vsql 起動時に「-h」オプションを使用している ・環境変数「VSQL_HOST」を設定している |
| %m | ホスト名(ドメイン名を含まない) | 以下のいずれかの場合のみ有効 ・vsql 起動時に「-h」オプションを使用している ・環境変数「VSQL_HOST」を設定している |
| %> | 接続ポート番号 | |
| %n | 接続ユーザ名 | |
| %/ | カレントデータベース名 | vsql 起動時に「-d」オプションを使用している場合のみ有効 |
| %~ | ~ | デフォルトのデータベースに接続している場合 |
| カレントデータベース名 | デフォルト以外のデータベースに接続している場合 | |
| %# | > | |
| %R | = | [PROMPT1に指定]通常時 |
| ^ | [PROMPT1に指定]シングルラインモードの場合 | |
| ! | [PROMPT1に指定]データベースへの接続に失敗した場合 | |
| - | [PROMPT2に指定] | |
| (なし) | [PROMPT3に指定] | |
| %:name: | vsql の変数 name に設定された値 | (*1) |
| %`command` | OSコマンドの実行結果 |
(*1) vsql の変数を設定する方法については、vsqlで変数を使う方法 を参考にしてください。
使用例
プロンプト1にユーザ名を表示する
現在 Vertica に接続しているユーザ名「kkauser」をプロンプトに表示します。
kkadb=> \set PROMPT1 '[%n] %# '
[kkauser] > プロンプト1に現在時刻を表示する
OS コマンドの実行結果を利用して、現在時刻(時分秒)をプロンプトに表示します。
kkadb=> \set PROMPT1 '[%`date "+%Y%m%d-%H%M%S"`] %# '
[20180613-120501] > 他にも複数のパラメータを組み合わせて、任意の表示をさせることが可能です。
複数ターミナルで vsql を起動した際にユーザ名をプロンプトに表示し間違えを防いだり、作業時のコマンド実行時刻を残しておきたい場合など、様々な場面において活用することができます。
検証バージョンについて
この記事の内容はVertica 9.1で確認しています。