はじめに

Verticaでは、vsqlユーティリティを使ってデータベースに接続しますが、このvsqlユーティリティではSQLを実行する際に変数を使う事で動的なSQLを実行する事ができます。
この記事ではvsqlで変数を使う方法をご紹介します。

変数の定義方法

変数を定義する方法は2通りあります。
1. vsqlを実行する時の引数で定義
2. vsqlプロンプトの中で定義
これらについて、順番に記載します。

1. vsqlを実行する時の引数で定義


vsqlを実行する時のコマンドの引数で変数を定義するには、-vオプションを使います。
引数には、「変数名=値」を与えます。

使用例
$ vsql -v my_table=lineorder
この例では、「my_table」という変数に「lineorder」という文字を代入しています。


2. vsqlプロンプトの中で定義


vsqlプロンプトの中で変数を定義するには、\setを使います。
構文は、「\set 変数名 値」です。
使用例
dbadmin=> \set my_table lineorder;


注意点
変数名には、文字と数字と_(アンダースコア)を使う事ができます。
いくつかの変数はvsqlにとって特別な意味を持っており、それらは大文字で定義されています。
これらの大文字で定義された変数は使わないようにしてください。

変数の確認方法


設定した定義の一覧を確認するには、\setを使います。
この方法だと、自身が設定した変数の他にVerticaがデフォルトで設定している変数も一緒に出力されます。
使用例
dbadmin=> \set
VERSION = ‘vsql’
AUTOCOMMIT = ‘off’
VERBOSITY = ‘default’
PROMPT1 = ‘%/%R%# ‘
PROMPT2 = ‘%/%R%# ‘
PROMPT3 = ‘>> ‘
ROWS_AT_A_TIME = ‘1000’
DBNAME = ‘dbadmin’
USER = ‘dbadmin’
PORT = ‘5433’
LOCALE = ‘en_US@collation=binary’
HISTSIZE = ‘500’
my_table = ‘lineorder’


特定の変数をピンポイントで確認するには、\echoを使います。
構文は、「\echo :変数名」です。
使用例
dbadmin=> \echo :my_table
lineorder


変数の解除方法

設定した定義を解除するには、\unsetを使います。
構文は、「\unset 変数名」です。
使用例
dbadmin=> \unset my_table

変数の使い方

定義した変数をSQLの中で使うには、変数名の前に:(コロン)を付けます。

使用例
dbadmin=> select * from :my_table ;

使用例

SQLの中で指定するテーブル名を変数化する例を記載します。
例えば、頻繁に使う長い名前のテーブルがあるとして、そのテーブル名を変数化する例を紹介します。

変数化するテーブル名:jugemu_jugemu
変数名:my_table
変数を定義します。



定義した変数を確認します。

動作確認をします。


このようにvsqlでは変数を使う事ができます。
これをシェルスクリプトなどと組み合わせて応用する事で、様々な場面で活用できると思います。

検証バージョンについて

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