はじめに

こちらの記事では、vsql のコマンドラインオプションについて記載します。
知っておくと便利なオプションも多数ありますので、ぜひ参考にしていただければと思います。

使用可能なコマンドラインオプション

一般的なオプション

オプション説明
--command <command>
-c <command>
指定した単一のコマンドを実行して、vsql を終了します。
このオプションは、シェルスクリプト内で SQL を実行する際などに役立ちます。
--dbname <dbname>
-d <dbname>
接続するデータベースの名前を指定します。
--file <filename>
-f <filename>
コマンドを対話形式で読み取る代わりに、指定したファイルを実行します。
ファイル内のコマンドを実行後、vsql は終了します。
--helpvsql のコマンドラインオプションに関するヘルプを表示します。
--timing
-i
各 SQL ステートメントの実行時間(ミリ秒単位)を表示する \timing メタコマンドを有効化します。
(vsql 起動後に \timing on メタコマンドを実行した際と同じ効果が得られます)
--list
-l
使用可能なすべてのデータベース名を返します。
なお、他の非接続オプションは無視されます。
このオプションは vsql の \list メタコマンドと類似した結果を返します。
--set <assignment>
--variable <assignment>
-v <assignment>
vsql 内で使用可能な変数の割り当てを行います。
(vsql 起動後に \set <assignment> メタコマンドを実行した際と同じ効果が得られます)
--version
-V
vsql のバージョンを表示します。
--no-vsqlr
-X
すべてのコマンドライン編集および履歴機能を無効化します。


接続オプション

オプション説明
-4デュアルスタック環境 (*) でホスト名を解決する場合、 IPv4 アドレスを優先します。
-6デュアルスタック環境 (*) でホスト名を解決する場合、 IPv6 アドレスを優先します。
-B <server:port> [,...]接続バックアップサーバホスト名/ポート番号を設定します(デフォルト:設定なし)。
複数ホストを指定する場合は、カンマ区切りで記載します。
IPv6 アドレスを使用する場合は、アドレスを角かっこ([])で囲み、角かっこの外側にポート番号を記載します。

記載例)
-B [2620:0:a13:8a4:9d9f:e0e3:1181:7f51]:5433
--enable-connection-load-balance
-C
ロードバランス接続を有効にします(デフォルト:無効)。

[備考]
デュアルスタック環境(*)では、1つのアドレスファミリでのみロードバランシングの使用が可能です。
たとえば、IPv6 アドレスにてロードバランスを構成している場合、IPv4 クライアントがロードバランス接続を要求しても、データベースサーバはそれを許可しません。
--host <hostname>
-h <hostname>
データベースサーバのホスト名を指定して、接続先データベースを指定します。
-k <krb-service>Kerberos プリンシパルのサービス名部分を提供します(デフォルト:vertica)。
-k オプションは、ドライバの KerberosServiceName 接続文字列を使用することと同等です。
-K <krb-host>Kerberos プリンシパルのインスタンスまたはホスト名部分を提供します。
-K オプションは、ドライバの KerberosHostName 接続文字列を使用することと同等です。
--sslmode
-m
データベースサーバへの SSL 接続を確立するためのポリシーを指定します。
オプションは、require、prefer、allow、および disable です。
(vsql 起動後に、VSQL_SSLMODE 変数を設定した際と同じ効果が得られます)
VSQL_SSLMODE 変数が設定されている場合でも、コマンドラインオプションを指定するとコマンドラインオプションが優先されます。
--port <port>
-p <port>
データベース接続をリッスンする TCP ポートまたはローカルソケットファイル拡張子を指定します。
デフォルトはポート5433です。
--username <username>
-U <username>
デフォルトユーザ(通常は dbadmin ユーザ)ではなく、指定したユーザとしてデータベースに接続します。
-w <password>データベースユーザのパスワードを指定します。

[備考]
このコマンドラインオプションを使用すると、データベースパスワードがプレーンテキストで表示されます。
特にデータベース管理者として接続している場合は、機密情報が公開されないよう注意が必要です。
--password
-W
データベースに接続する前にパスワードの入力を要求します。(-w オプションを指定しない場合と同等です)
入力されたパスワードは画面に表示されません。
このオプションは、セッション単位で有効化されるため、メタコマンド \connect を使用してデータベース接続を変更した際もパスワード入力が必須となります。

(*) IPv4 と IPv6 の異なるプロトコルスタックが共存した環境

出力フォーマット

オプション説明
--no-align
-A
非整列出力モードに切り替えます。
(デフォルトは整列出力モード(aligned)です)
-bコマンド完了時にビープ音を鳴らします。
--field-separator <separator>
-F <separator>
非整列出力モード時のフィールド区切り文字を指定します(デフォルト: "|" )。
(vsql 起動後に \pset fieldsep メタコマンド、もしくは \f メタコマンドを実行した際と同じ効果が得られます)
--html
-H
HTML表形式出力をオンにします。
(vsql起動後に \pset format html メタコマンド、もしくは \H メタコマンドを実行した際と同じ効果が得られます)
--pset <assignment>
-P <assignment>
\pset メタコマンドと同等のスタイルで表示オプションを指定できます。
ただし、名前と値はスペースではなく、等号(=)で結ぶ必要があります。
例えば、出力形式を LaTeX に設定する場合、-P format=latex と記載します。
-Qクエリ実行結果末尾のレコード区切り文字をオンにします。
(vsql 起動後に \pset trailingrecordsep メタコマンドを実行した際と同じ効果が得られます)
--record-separator <separator>
-R <separator>
レコード区切り文字を指定します。
(vsql起動後に \pset recordsep メタコマンドを実行した際と同じ効果が得られます)
--tuples-only
-t
列名、結果の行カウントフッターなどの表示を無効化します。
(vsql起動後に \t メタコマンドを実行した際と同じ効果が得られます)
--table-attr <options>
-T <options>
HTML tableタグ内に配置するオプションを指定できます。
詳細はメタコマンド \pset の tableattr を参照してください。
--expanded
-x
拡張テーブルフォーマットモードを有効化します。
(vsql 起動後に \x メタコマンドを実行した際と同じ効果が得られます)


入力および出力オプション

オプション説明
--echo-all
-a
読み取られたすべての入力を標準出力に出力します。
このオプションは、シェル実行などのスクリプト処理に役立ちます。
(vsql起動後に ECHO 変数に "all" を設定した際と同じ効果が得られます)
--echo-queries
-e
データベースサーバに送信されたすべての SQL コマンドを標準出力に出力します。
(vsql 起動後に ECHO 変数に "queries" を設定した際と同じ効果が得られます)
-E内部コマンドによって生成されたクエリを表示します。
-nコマンドライン編集を無効にします。
--output <filename>
-o <filename>
すべてのクエリ出力を <filename> に書き込みます。
(vsql 起動後に \o コマンドを実行した際と同じ効果が得られます)
--quiet
-q
vsql をサイレントモード(ウェルカムメッセージなどの情報出力なしで)で実行します。
このコマンドは、-c オプションとともに使用すると便利です。
(vsql 起動後に、QUIET 変数を設定した際と同じ効果が得られます)
--single-step
-s
スクリプトをデバッグするためにシングルステップモードで実行します。
各ステートメントがデータベースに送信される前に vsql にプロンプ​​トを表示させ、実行をキャンセルできるようにします。
--single-line
-S
セミコロンを記載しなくとも、改行が SQL コマンドの終了を意味する単一行モードで実行します。

[備考]
Vertica では、1行で SQL コマンドとメタコマンドを混在させる場合、単一行モードを使用しないことが推奨されています。


使用例

上記で紹介したオプションを実際に使用している記事を使用例として一部ご紹介します。

SELECT結果をCSV出力する方法
 (使用オプション:-w,-A,-F,-t,-P,-X,-n,-q,-c)

SELECT結果をCSV出力する方法(その2)
 (使用オプション:-w,-A,-F,-t,-o)

ロードバランスおよび接続時フェイルオーバー機能を使用したvsqlからの接続
 (使用オプション:-w,-h,-B,-C,-U)

検証バージョンについて

この記事の内容はVertica 9.2で確認しています。

更新履歴

2019/10/03 本記事を公開