psql (original) (raw)

psql内で入力されたコマンドのうち、引用符で囲まれていないバックスラッシュで始まるものは、psql自身が実行するpsqlのメタコマンドとして扱われます。 これらのコマンドを使うと、データベースを管理したりスクリプトを作成するにあたって、psqlがより便利になります。 メタコマンドはよくスラッシュコマンド、またはバックスラッシュコマンドとも呼ばれます。

psqlコマンドは、バックスラッシュ、コマンド本体、引数の順につなげた形式になっています。 引数とコマンド本体の間および引数と引数の間は、空白文字によって分割されています。

引数に空白を含める場合は単一引用符で囲みます。 単一引用符を引数に含める場合には、単一引用符で括られた文字列の中で、その単一引用符を2つ続けてください。 単一引用符で囲われた文字は、C言語と同じような置換の対象となります。 このような文字には、\n(改行)、\t(タブ)、\b (後退)、\r(復帰)、\f (改頁)、\ _digits_(8進数で表された文字)、\x _digits_(16進数で表された文字)があります。 単一引用符で括られたテキスト内でその他の任意の文字の前にバックスラッシュを付けた場合は、その文字が何であろうとその一文字だけとして扱われます。

引数の中で逆引用符(`)で囲まれたテキストは、コマンドラインとして認識され、シェルに渡されます。 コマンドの結果(末尾の改行は削除されます)で逆引用符で囲まれたテキストを置き換えます。

コマンドには、引数として(テーブル名などの)SQLの識別子を取るものがあります。 これらの引数は次のようなSQLの構文規則に従います。 引用符を伴わない文字は強制的に小文字になります。しかし、二重引用符(")で囲まれると、大文字小文字変換が行われず、空白文字を識別子内に含めることができます。 さらに、二重引用符内では、連続する2つの二重引用符は1つの二重引用符とみなされます。 例えば、FOO"BAR"BAZfooBARbazと解釈され、"A weird"" name"A weird" nameになります。

引数の解析は行末または引用符で囲まれていないもう1つのバックスラッシュが見つかると終了します。 引用符がないバックスラッシュは新しいメタコマンドの始まりと解釈されます。\\(バックスラッシュ2つ)という特別な文字の並びは引数の終わりを意味するので、SQLコマンドが残されている場合は、その解析を続けます。 このように、SQLコマンドとpsqlコマンドは1つの行に自由に混合して記述することができます。 しかし、あらゆる場合において、メタコマンドの引数は行をまたぐことはできません。

\a

現在のテーブルの出力形式が「揃えない」になっていれば「揃える」に、 「揃える」になっていれば「揃えない」に設定します。 このコマンドは後方互換性を保持するためにあります。 より一般的な解決策は\psetを参照してください。

\c または \connect [ -reuse-previous=_`on|off`_ ] [ _`dbname`_ [ _`username`_ ] [ _`host`_ ] [ _`port`_ ] | _`conninfo`_ ]

PostgreSQLサーバへの新規の接続を確立します。 接続のパラメータは、位置の構文、あるいは_conninfo_接続文字列で指定することができます。 後者の詳細は32.1.1. 接続文字列で説明します。

コマンドでデータベース名、ユーザ、ホストあるいはポートを省略した場合、新しい接続では以前の接続での値を再利用することができます。 デフォルトでは、_conninfo文字列を処理する場合を除き、以前の接続での値が再利用されます。 第一引数で-reuse-previous=onあるいは-reuse-previous=offを渡すことで、このデフォルトと異なる動作をさせることができます。 コマンドで特定のパラメータを指定せず、かつ再利用もしない場合は、libpqのデフォルトが使用されます。dbnameusernamehostport_のいずれについても-を指定するのは、パラメータを省略するのと同じになります。

新規接続に成功した場合、以前の接続は閉じられます。 接続の試行が(ユーザ名の間違いやアクセス拒否などの理由で)失敗した場合、psqlが対話式モードである場合に限り、それまでの接続が保持されます。 非対話式スクリプトを実行している場合は、処理はエラーとなり、即座に停止します。 この実装の違いは、対話モードでは入力ミスに対するユーザの利便性を考慮し、非対話モードではスクリプトによって間違ったデータベースを操作することを防ぐための安全策を考慮した結果決められました。

例:

=> \c mydb myuser host.dom 6432 => \c service=foo => \c "host=localhost port=5432 dbname=mydb connect_timeout=10 sslmode=disable" => \c postgresql://tom@localhost/mydb?application_name=myapp

\C [ _`title`_ ]

問い合わせ結果として表示されるテーブルのタイトルの設定、または、タイトルの設定解除を行います。 このコマンドは、\pset title _`title`_と同じ効力を持ちます。 (このコマンド名は「標題(caption)」に由来します。 以前はHTMLのテーブルの標題を設定するためだけに使われていたためです。)

\cd [ _`directory`_ ]

現在の作業ディレクトリを_directory_に変更します。 引数がない場合は、現在のユーザのホームディレクトリに変更します。

ヒント

現在の作業ディレクトリを表示するには、\! pwdを使用してください。

\conninfo

現在のデータベース接続に関する情報を出力します。

\copy { _`table`_ [ ( _`columnlist`_ ) ] | ( _`query`_ ) } { `from` | `to` } { _`'filename'`_ | program _`'command'`_ | stdin | stdout | pstdin | pstdout } [ [ with ] ( _`option`_ [, ...] ) ]

フロントエンド(クライアント)コピーを行います。 これはCOPY SQLコマンドを実行する操作ですが、サーバで指定ファイルに対する読み込みまたは書き込みを行うのではなく、psqlがファイルの読み書きや、サーバとローカルファイルシステム間のデータ送信を行います。 この場合、ファイルへのアクセス権限はサーバではなくローカルユーザのものを使用するので、SQLのスーパーユーザ権限は必要ありません。

programが指定された場合、_commandがpsqlにより実行され、commandから、または、command_へのデータはサーバとクライアント間を行き来します。 ここでも、実行権限はローカル側のユーザであり、サーバ側ではなく、SQLスーパーユーザ権限は必要とされません。

\copy ... from stdinでは、データ行は、コマンドの発行源と同じところから、\.を読み取るまで、あるいは、ストリームがEOFに達するまで読み続けます。 このオプションは、SQLスクリプトファイルの内部でテーブルにデータを投入する場合に便利です。\copy ... to stdoutでは、出力はpsqlコマンドの出力と同じところに送られますが、COPY _`count`_コマンドのステータスは表示されません(これはデータ行と混同してしまうかもしれないからです)。 コマンドの入力元や\oオプションに関わらず、psqlの標準入力や標準出力を読み書きするには、from pstdinあるいはto pstdoutと書いてください。

このコマンドの構文はSQLのCOPYコマンドに似ています。 データの入力元と出力先以外のすべてのオプションはCOPYと同じです。 このため\copyコマンドには特別な解析規則が適用されていることに注意してください。 特に、psqlの変数の置換規則やバックスラッシュエスケープは適用されません。

ヒント

この操作はSQLのCOPYコマンドほど効率が良いわけではありません。 これは、全てのデータをクライアント/サーバ接続を通じてやり取りしなければならないからです。 データ量が多い時はSQLコマンドを使用する方が良いでしょう。

\copyright

PostgreSQLの著作権および配布条項を表示します。

\crosstabview [_`colV`_ [ _`colH`_ [ _`colD`_ [ _`sortcolH`_ ] ] ] ]

問い合わせのバッファを実行し(\gと同様)、その結果をクロス表形式で表示します。 問い合わせは少なくとも3つの列を返す必要があります。_colVで特定される出力列が縦方向のヘッダになり、colHで特定される出力列が横方向のヘッダになります。colDは表内に表示される出力列を特定します。 オプションのsortcolH_で水平方向のヘッダをソートする列を指定できます。

それぞれの列の指定は、列番号(1から始まります)でも列名でも可能です。 列名については、通常のSQLの大文字小文字変換および引用の規則が適用されます。 省略した場合、_colVは列1、colHは列2となります。colHcolVとは異なるものでなければなりません。colDを指定しない場合、問い合わせの結果にはちょうど3つの列がなければならず、colVでもcolHでもない列がcolD_となります。

縦方向のヘッダは一番左の列に表示され、_colV_の列にある値が問い合わせ結果と同じ順序で現れますが、重複するものは除かれます。

横方向のヘッダは1行目に表示され、_colHの列にある値が現れますが、重複するものは除かれます。 デフォルトでは、これらは問い合わせの結果と同じ順序で表示されます。 しかしオプションのsortcolH引数が指定された場合は、colHの値は対応するsortcolHの値に従ってソートされて横方向のヘッダに現れますが、sortcolH_の列の値は整数値でなければなりません。

クロス表の内側では、_colHのそれぞれの個別値xcolVのそれぞれの個別値yに対して、その交点(x,y)に位置するセルに、問い合わせの結果のcolHの値がxcolV_の値がyである行のcolD列の値が現れます。 そのような行がなければ、セルは空欄になります。 そのような行が複数あると、エラーが報告されます。

\d[S+] [ [_pattern_](app-psql.html#app-psql-patterns "パターン") ]

_pattern_にマッチする各リレーション(テーブル、ビュー、マテリアライズドビュー、インデックス、シーケンス、外部テーブル)または複合型について、全ての列、列の型、テーブル空間(デフォルト以外を使用している場合)、NOT NULLやデフォルトなどの特別な属性を表示します。 関連付けられているインデックス、制約、ルールおよびトリガも表示されます。 外部テーブルでは関連する外部サーバも表示されます。 (「パターンのマッチング」については後述のパターンで定義されています。)

一部の種類のリレーションでは、\dは各列について追加の情報を表示します。 例えば、シーケンスでは列の値、インデックスではインデックス式、外部テーブルでは外部データラッパのオプションです。

\d+というコマンド形式も同一ですが、より多くの情報を表示します。 こちらでは、テーブルの列に関連付けられたコメントやテーブルにOIDが存在するかどうか、リレーションがビューの場合はビューの定義、デフォルトと異なるreplica identityの設定も表示されます。

デフォルトではユーザが作成したオブジェクトのみが表示されます。 システムオブジェクトを含めるためには、パターンまたはS修飾子を付与してください。

注記

\dが_pattern_引数なしで使用された場合は、\dtvmsEと同じ意味となり、可視である全てのテーブル、ビュー、マテリアライズドビュー、シーケンス、外部テーブルの一覧が表示されます。 これは純粋に利便性のためです。

\da[S] [ [_pattern_](app-psql.html#app-psql-patterns "パターン") ]

集約関数と、その戻り値のデータ型、演算対象となるデータ型の一覧を表示します。_pattern_が指定された場合、そのパターンに名前がマッチする集約のみが表示されます。 デフォルトではユーザが作成したオブジェクトのみが表示されます。 システムオブジェクトを含めるためには、パターンまたはS修飾子を付与してください。

\dA[+] [ [_pattern_](app-psql.html#app-psql-patterns "パターン") ]

アクセスメソッドの一覧を表示します。_pattern_が指定された場合は、そのパターンにマッチする名前のアクセスメソッドのみが表示されます。 コマンド名の後に+が付加された場合は、各メソッドに関連付けられたハンドラ関数および説明も表示されます。

\db[+] [ [_pattern_](app-psql.html#app-psql-patterns "パターン") ]

テーブル空間を一覧表示します。_pattern_が指定された場合、そのパターンに名前がマッチするテーブル空間のみが表示されます。 コマンド名に+が付与された場合、各テーブル空間に関連付けされたオプション、ディスク上のサイズ、権限、摘要についても表示します。

\dc[S+] [ [_pattern_](app-psql.html#app-psql-patterns "パターン") ]

文字セット符号化方式間の変換の一覧を表示します。_pattern_が指定された場合、そのパターンに名前がマッチする変換のみが表示されます。 デフォルトではユーザが作成したオブジェクトのみが表示されます。 システムオブジェクトを含めるためには、パターンまたはS修飾子を付与してください。 コマンド名に+を付与すると、各オブジェクトに関連する説明を付けて表示します。

\dC[+] [ [_pattern_](app-psql.html#app-psql-patterns "パターン") ]

型キャストの一覧を表示します。_pattern_が指定された場合、そのパターンに元データ型または変換先データ型がマッチするキャストのみが表示されます。 コマンド名に+を付与すると、各オブジェクトに関連する説明を付けて表示します。

\dd[S] [ [_pattern_](app-psql.html#app-psql-patterns "パターン") ]

constraintoperator classoperator familyruletriggerという種類のオブジェクトについての説明を表示します。 他のコメントはすべて、これらのオブジェクト種類用の対応するバックスラッシュコマンドによって表示されます。

\ddは_pattern_にマッチするオブジェクトの説明を表示します。 引数が指定されていない場合は、適切な種類の可視なオブジェクトの説明を表示します。 どちらの場合でも、一覧に表示されるのは説明を持つオブジェクトのみです デフォルトではユーザが作成したオブジェクトのみが表示されます。 システムオブジェクトを含めるためには、パターンまたはS修飾子を付与してください。

オブジェクトの説明はCOMMENT SQLコマンドを使用して作成することができます。

\ddp [ [_pattern_](app-psql.html#app-psql-patterns "パターン") ]

デフォルトのアクセス権限設定を一覧表示します。 組み込みのデフォルトから権限設定が変更されたロール(および適切ならばスキーマも)ごとに1項目示されます。_pattern_が指定された場合、パターンにマッチするロール名またはスキーマ名の項目のみが表示されます。

ALTER DEFAULT PRIVILEGESコマンドを使用して、デフォルトのアクセス権限を設定します。 権限表示の意味はGRANTで説明します。

\dD[S+] [ [_pattern_](app-psql.html#app-psql-patterns "パターン") ]

ドメインを一覧表示します。_pattern_が指定されている場合は、パターンに名前がマッチするドメインのみが表示されます。 デフォルトではユーザが作成したオブジェクトのみが表示されます。 システムオブジェクトを含めるためには、パターンまたはS修飾子を付与してください。 コマンド名に+を付与すると、各オブジェクトに関連する権限と説明を付けて表示します。

\dE[S+] [ [_pattern_](app-psql.html#app-psql-patterns "パターン") ]
\di[S+] [ [_pattern_](app-psql.html#app-psql-patterns "パターン") ]
\dm[S+] [ [_pattern_](app-psql.html#app-psql-patterns "パターン") ]
\ds[S+] [ [_pattern_](app-psql.html#app-psql-patterns "パターン") ]
\dt[S+] [ [_pattern_](app-psql.html#app-psql-patterns "パターン") ]
\dv[S+] [ [_pattern_](app-psql.html#app-psql-patterns "パターン") ]

このコマンド群において、Eimstvという文字はそれぞれ、外部テーブル、インデックス、マテリアライズドビュー、シーケンス、テーブル、ビューを表します。 これらの種類のオブジェクトの一覧を表示するために、これらの文字の中の任意の文字またはすべてを任意の順番で指定することができます。 例えば、\ditはインデックスとテーブルを列挙します。+がコマンド名に付与された場合、各オブジェクトは、もしあればディスク上の物理容量と関連する説明をつけて表示されます。_pattern_が指定されている場合は、パターンに名称がマッチする項目のみが表示されます。 デフォルトでは、ユーザが作成したオブジェクトのみが表示されます。 システムオブジェクトを含めるためにはパターンまたはS修飾子を付与してください。

\des[+] [ [_pattern_](app-psql.html#app-psql-patterns "パターン") ]

外部(foreign)サーバ(つまり「external servers」)を一覧表示します。_pattern_が指定されている場合は、名前がパターンにマッチするサーバのみが表示されます。\des+構文が使用された場合、サーバのACL、型、バージョン、オプション、説明など各サーバの完全な説明が表示されます。

\det[+] [ [_pattern_](app-psql.html#app-psql-patterns "パターン") ]

外部(foreign)テーブル(つまり「external tables」)を一覧表示します。_pattern_が指定された場合、パターンにテーブル名またはスキーマ名がマッチするもののみが表示されます。\det+が使用された場合、汎用オプションと外部テーブルの説明も表示されます。

\deu[+] [ [_pattern_](app-psql.html#app-psql-patterns "パターン") ]

ユーザマップ(つまり「external users」)を一覧表示します。_pattern_が指定されている場合は、名前がパターンにマッチするユーザのみが表示されます。\deu+構文が使用された場合、各マップについて追加情報が表示されます。

注意

\deu+ではリモートユーザのユーザ名とパスワードも表示される可能性があります。 これらを外部に曝さないように注意しなければなりません。

\dew[+] [ [_pattern_](app-psql.html#app-psql-patterns "パターン") ]

外部データラッパ(つまり「external wrappers」)を一覧表示します。_pattern_が指定されている場合、名前がパターンにマッチする外部データラッパのみが表示されます。\dew+構文が使用された場合、外部データラッパのACL、オプションおよび説明も表示されます。

\df[antwS+] [ [_pattern_](app-psql.html#app-psql-patterns "パターン") ]

関数とその結果のデータ型、引数のデータ型、および、「agg」 (集約)、「normal」、「trigger」、「window」で分類される関数の種類の一覧を表示します。 特定種類の関数のみを表示させるには、対応する文字antwをコマンドに付けて下さい。_pattern_が指定されている場合は、そのパターンに名前がマッチする関数のみが表示されます。 デフォルトではユーザが作成したオブジェクトのみが表示されます。 システムオブジェクトを含めるためには、パターンまたはS修飾子を付与してください。\df+構文が使われた場合、各関数の、揮発性、並列処理での安全性、所有者、セキュリティ分類、アクセス権限、言語、ソースコードや説明を含む付加的情報も表示されます。

ヒント

特定のデータ型を引数とする関数や特定のデータ型を返す関数を検索するには、ページャの検索機能を使用して\dfの出力をスクロールしてください。

\dF[+] [ [_pattern_](app-psql.html#app-psql-patterns "パターン") ]

全文検索設定を一覧表示します。_pattern_が指定された場合、このパターンにマッチする名前の設定のみが表示されます。\dF+形式が使用された場合、使用される全文検索パーサや各パーサトークン型についての辞書リストなど各設定の完全な説明が表示されます。

\dFd[+] [ [_pattern_](app-psql.html#app-psql-patterns "パターン") ]

全文検索辞書を一覧表示します。_pattern_が指定された場合、このパターンにマッチする名前の辞書のみが表示されます。\dFd+形式が使用された場合、選択された辞書それぞれについて使用される全文検索テンプレートやオプション値など更なる情報が表示されます。

\dFp[+] [ [_pattern_](app-psql.html#app-psql-patterns "パターン") ]

全文検索パーサを一覧表示します。_pattern_が指定された場合、このパターンにマッチする名前のパーサのみが表示されます。\dFp+形式が使用された場合、使用される関数や認知されるトークン型のリストなど各パーサの完全な説明が表示されます。

\dFt[+] [ [_pattern_](app-psql.html#app-psql-patterns "パターン") ]

テキスト検索テンプレートを一覧表示します。_pattern_が指定された場合、このパターンにマッチする名前のテンプレートのみが表示されます。\dFt+形式が使用された場合、テンプレートそれぞれについて使用される関数名など更なる情報が表示されます。

\dg[S+] [ [_pattern_](app-psql.html#app-psql-patterns "パターン") ]

データベースロールを一覧表示します。 (「ユーザ」と「グループ」という概念は「ロール」に統合されましたので、このコマンドは\duと同じものになりました。) デフォルトでは、ユーザによって作成されたロールのみが表示されます。 システムロールを含めるにはS修飾子を付与してください。_pattern_が指定されている場合は、そのパターンに名前がマッチするロールのみが表示されます。\dg+構文が使用された場合、ロールそれぞれについて更なる情報が表示されます。 現時点では各ロールのコメントが追加されます。

\dl

\lo_listの別名で、ラージオブジェクトの一覧を表示します。

\dL[S+] [ [_pattern_](app-psql.html#app-psql-patterns "パターン") ]

手続き言語を一覧表示します。_pattern_を指定すると、パターンに名前がマッチする言語のみが表示されます。 デフォルトではユーザが作成した言語のみが表示されます。 システムオブジェクトを含めるためには、パターンまたはS修飾子を付与してください。+をコマンド名に追加すると、呼び出しハンドラ、有効性検証関数、アクセス権限、システムオブジェクトか否かという情報を付けて各言語が表示されます。

\dn[S+] [ [_pattern_](app-psql.html#app-psql-patterns "パターン") ]

スキーマ(名前空間)の一覧を表示します。_pattern_を指定すると、パターンに名前がマッチするスキーマのみが表示されます。 デフォルトではユーザが作成したオブジェクトのみが表示されます。 パターンまたはS修飾子を追加すると、システムオブジェクトが表示に追加されます。 コマンド名の後に+を付加すると、各オブジェクトに関連付けられている権限と説明が(存在すれば)表示されます。

\do[S+] [ [_pattern_](app-psql.html#app-psql-patterns "パターン") ]

演算子と、その演算項目と結果の型を一覧表示します。_pattern_を指定すると、パターンに名前がマッチする演算子のみが表示されます。 デフォルトではユーザが作成したオブジェクトのみが表示されます。 システムオブジェクトを含めるためには、パターンまたはS修飾子を付与してください。 コマンド名に+を付加すると、各演算子についての追加情報が表示されますが、現在はその元になっている関数の名前だけです。

\dO[S+] [ [_pattern_](app-psql.html#app-psql-patterns "パターン") ]

照合順序を一覧表示します。_pattern_を指定すると、パターンに名前がマッチする照合順序のみが表示されます。 デフォルトではユーザが作成したオブジェクトのみが表示されます。 システムオブジェクトを含めるためには、パターンまたはS修飾子を付与してください。 コマンド名の後に+を付加すると、各照合順序に関連付けられている説明が(存在すれば)表示されます。 現在のデータベースの符号化方式で使用できる照合順序のみが表示されることに注意してください。 このため同じインストレーションであってもデータベースによって結果が異なる可能性があります。

\dp [ [_pattern_](app-psql.html#app-psql-patterns "パターン") ]

テーブル、ビュー、シーケンスを、関連付けられているアクセス権限とともに一覧表示します。_pattern_を指定すると、パターンに名前がマッチするテーブル、ビュー、シーケンスのみが表示されます。

アクセス権限の設定にはGRANTコマンドとREVOKEコマンドが使われます。 権限の表示に関する意味はGRANTで説明します。

\drds [ [_role-pattern_](app-psql.html#app-psql-patterns "パターン") [ [_database-pattern_](app-psql.html#app-psql-patterns "パターン") ] ]

定義済み設定に関する設定を一覧表示します。 これらの設定はロール固有、データベース固有、またはその両方です。role-patternおよびdatabase-patternはそれぞれ特定のロールやデータベースを選択するために使用します。 パターンが省略された場合、または*が指定された場合、ロール固有ではない、または、データベース固有ではない設定を含め、すべての設定を表示します。

ロール単位およびデータベース単位の設定を定義するにはALTER ROLEおよびALTER DATABASEコマンドを使用します。

\dT[S+] [ [_pattern_](app-psql.html#app-psql-patterns "パターン") ]

データ型を一覧表示します。_pattern_を指定すると、パターンにマッチする名前を持つ型のみを表示します。+をコマンド名に付けると、型ごとに、型の内部名、サイズ、enum型では許される値、関連する権限も表示されます。 デフォルトではユーザが作成したオブジェクトのみが表示されます。 システムオブジェクトを含めるためには、パターンまたはS修飾子を付与してください。

\du[S+] [ [_pattern_](app-psql.html#app-psql-patterns "パターン") ]

データベースロールを一覧表示します。 (「ユーザ」と「グループ」という概念は「ロール」に統合されましたので、このコマンドは\dgと同じものになりました。)_pattern_が指定されている場合は、そのパターンに名前がマッチするロールのみが表示されます。 デフォルトでは、ユーザによって作成されたロールのみが表示されます。 システムロールを含めるにはS修飾子を付与してください。\du+構文が使用された場合、ロールそれぞれについて更なる情報が表示されます。 現時点では各ロールのコメントが追加されます。

\dx[+] [ [_pattern_](app-psql.html#app-psql-patterns "パターン") ]

インストールされた拡張を一覧表示します。_pattern_を指定すると、パターンにマッチする名前の拡張のみを表示します。\dx+形式が使用された場合、マッチする拡張それぞれについて拡張に属するすべてのオブジェクトが表示されます。

\dy[+] [ [_pattern_](app-psql.html#app-psql-patterns "パターン") ]

イベントトリガを一覧表示します。_pattern_を指定すると、パターンにマッチする名前のイベントトリガのみを表示します。+をコマンド名に追記すると、関連する説明を付けて各オブジェクトを表示します。

\eまたは\edit [ _`filename`_ ] [ _`linenumber`_ ]

_filenameが指定された場合、このファイルが編集されます。 エディタを終了した後、その内容は問い合わせバッファにコピーされます。filename_がない場合、現在の問い合わせバッファが一時ファイルにコピーされ、同様に編集されます。

次に、新しい問い合わせバッファは、psqlの通常の規則に従い、全体を1行として再解析されます (このため、この方法では「スクリプト」を作成できません。 この目的のためには\iを使用してください)。 これは問い合わせの終端がセミコロンである(もしくは問い合わせがセミコロンを含む)場合、すぐに実行されることを意味しています。 セミコロンを含まない場合は、問い合わせバッファ内に保持されて入力を待ちます。 セミコロンまたは\gを入力して送信するか、\rを入力してキャンセルしてください。

行番号(line_number)が指定された場合、psqlはファイルまたは問い合わせバッファ内の指定行にカーソルを位置づけます。 すべてが数字の引数が1つだけ指定された場合、psqlはそれをファイル名ではなく行番号であるとみなすことに注意してください。

ヒント

使用するエディタを設定、カスタマイズする方法については環境を参照してください。

\echo _`text`_ [ ... ]

引数を空白で区切り、標準出力に出力し、改行します。 スクリプトが出力するところどころに情報を記載する場合に有用です。 使用例を次に示します。

=> \echo `date` Tue Oct 26 21:40:57 CEST 1999

最初の引数が引用符で囲まれていない-nである場合、最後の改行は出力されません。

ヒント

\oコマンドを使用して問い合わせの出力先を変更した場合、このコマンドではなく、\qechoを使用した方が良いかもしれません。

\ef [ _`functiondescription`_ [ _`linenumber`_ ] ]

このコマンドは指定された関数の定義をCREATE OR REPLACE FUNCTIONコマンド構文で取り出し、編集します。 編集は\editと同様の方法で行われます。 エディタ終了後、更新されたコマンドは問い合わせバッファ内で待機しています。 セミコロンか\gを入力して送信するか、\rを入力して取り消すかしてください。

対象の関数は名前だけ、または、たとえばfoo(integer, text)のように名前と引数で指定することができます。 同じ名前の関数が複数存在する場合、引数の型を指定しなければなりません。

関数が指定されなかった場合、空のCREATE FUNCTIONのテンプレートが編集用に表示されます。

行番号が指定された場合、psqlは関数本体における指定行にカーソルを移動します。 (関数本体は通常、ファイルの先頭から始まらないことに注意してください。)

ヒント

使用するエディタを設定、カスタマイズする方法については環境を参照してください。

\encoding [ _`encoding`_ ]

クライアント側の文字セット符号化方式を設定します。 引数を指定しない場合、このコマンドは現在の符号化方式を表示します。

\errverbose

最も最近のサーバのエラーメッセージを最大の冗長さ、つまりVERBOSITYverboseに、そしてSHOW_CONTEXTalwaysに設定されているかのようにして、繰り返します。

\ev [ _`viewname`_ [ _`linenumber`_ ] ]

このコマンドは、指定したビューの定義をCREATE OR REPLACE VIEWコマンドの形式で取得して、編集します。 編集は\editの場合と同じ方法で行われます。 エディタを終了した後、更新されたコマンドが問い合わせバッファで待っている状態になります。 送信するにはセミコロンあるいは\gを、キャンセルするには\rを入力してください。

ビューを指定しなかった場合は、空のCREATE VIEWテンプレートが編集用に提供されます。

行番号を指定した場合、psqlはカーソルをビュー定義の指定した行に位置づけます。

\f [ _`string`_ ]

位置揃えされていない問い合わせの出力用の、フィールドの区切り文字を設定します。 デフォルトは、縦棒(「|」)です。 一般的な出力オプションの設定方法については、\psetを参照してください。

\g [ _`filename`_ ]
\g [ |_`command`_ ]

現在の問い合わせ入力バッファをサーバに送ります。 オプションを指定すれば、問い合わせ出力を_filenameに格納したり、その出力をシェルコマンドcommand_にパイプで渡すこともできます。 問い合わせが成功しゼロ以上のタプルが返る場合にのみファイルまたはコマンドに書き出されます。 問い合わせが失敗する場合やデータを返さないSQLコマンドでは書き出されません。

\gだけを指定した場合は、セミコロンと実質的に同じです。\gに引数を指定した場合は、\oコマンドの「一度限りの」代替手段として使用できます。

\gexec

現在の問い合わせ入力バッファをサーバに送信し、問い合わせの出力(あれば)の各行の各列をSQL文として実行します。 例えば、my_tableの各列にインデックスを作成するには次のようにします。

=> SELECT format('create index on my_table(%I)', attname) -> FROM pg_attribute -> WHERE attrelid = 'my_table'::regclass AND attnum > 0 -> ORDER BY attnum -> \gexec CREATE INDEX CREATE INDEX CREATE INDEX CREATE INDEX

生成された問い合わせは行が返された順番で実行され、また2つ以上の列が返された場合は、各行の中で左から右に実行されます。 NULLのフィールドは無視されます。 生成された問い合わせは、そのままサーバに送信されて処理されるため、psqlのメタコマンドとすることはできず、またpsqlの変数の参照を含むこともできません。 個別の問い合わせで失敗した場合、残りの問い合わせの実行はON_ERROR_STOPが設定されているのでなければ継続します。 個々の問い合わせの実行はECHOの処理に従います。 (\gexecを使う場合、ECHOallあるいはqueriesに設定することが推奨されることが多いでしょう。) 問い合わせのログ出力、シングルステップモード、時間表示(timing)、およびその他の問い合わせ実行に関する機能は、生成された各問い合わせにも適用されます。

\gset [ _`prefix`_ ]

現在の問い合わせ入力バッファをサーバに送信し、問い合わせの出力をpsql変数(変数参照)に格納します。 実行される問い合わせは正確に1行を返さなければなりません。 行の各列は、列と同じ名前を持つ別々の変数に格納されます。 例えば、以下のようになります。

=> SELECT 'hello' AS var1, 10 AS var2 -> \gset => \echo :var1 :var2 hello 10

_prefix_を指定した場合、使用する変数の名前を作成する時にその文字列が問い合わせの列名の前に付けられ、次のようになります。

=> SELECT 'hello' AS var1, 10 AS var2 -> \gset result_ => \echo :result_var1 :result_var2 hello 10

列の結果がNULLである場合、対応する変数は設定されず未設定状態となります。

問い合わせが失敗、または1行を返さない場合、変数は変更されません。

\hまたは\help [ _`command`_ ]

指定したSQLコマンドの構文に関するヘルプを表示します。_commandが指定されていない場合は、psqlは構文ヘルプが存在する全てのコマンドの一覧を表示します。command_をアスタリスク(*)にすると、全てのSQLコマンドの構文ヘルプが表示されます。

注記

入力を簡単にするため、複数の単語からなるコマンドを引用符で囲む必要はありません。**\help alter table**と入力するだけで十分です。

\Hまたは\html

HTML問い合わせ出力形式を有効にします。HTML形式が有効になっている場合は、デフォルトの位置揃えされたテキスト形式に戻します。 このコマンドは互換性と簡便性のために存在します。 他の出力オプションについては、\psetを参照してください。

\iまたは\include filename

_filename_ファイルから入力を読み取り、キーボードから入力された場合と同じように実行します。

_filename_が-(ハイフン)の場合、EOFを示すもの、または\qメタコマンドが読まれるまで標準入力から読み込みます。 これは対話的な入力とファイルからの入力を混在させるために使うことができます。 Readlineと同じ挙動は、それが最も外部のレベルで動作している場合にのみ利用されることに注意してください。

注記

読み取られた行を画面に表示させる場合は、ECHO変数をallに設定する必要があります。

\irまたは\include_relative filename

\irコマンドは\iと似ていますが、相対ファイル名の解決方法が異なります。 対話モードで実行している場合は2つのコマンドの動作は同一です。 しかし、スクリプトから呼び出す場合、\irは、現在の作業ディレクトリではなく、そのスクリプトの格納ディレクトリから見た相対ファイル名として解釈します。

\l[+] または \list[+] [ [_pattern_](app-psql.html#app-psql-patterns "パターン") ]

サーバ内のデータベースについて、その名前、所有者、文字セット符号化方式、アクセス権限を一覧表示します。_pattern_を指定すると、パターンにマッチする名前を持つデータベースのみを表示します。 コマンド名に+を付けると、データベースのサイズ、デフォルトのテーブル空間、説明も表示します。 (サイズ情報は現在のユーザが接続可能なデータベースでのみ表示されます。)

\lo_export _`loid`_ _`filename`_

データベースからOIDが_loidであるラージオブジェクトを読み取り、filename_に書き出します。 これはlo_exportサーバ関数とは微妙に異なります。lo_export関数は、データベースサーバを実行しているユーザ権限で、サーバ上のファイルシステムに対して動作します。

ヒント

ラージオブジェクトのOIDを確認するには、\lo_listを使用してください。

\lo_import _`filename`_ [ _`comment`_ ]

ファイルをPostgreSQLのラージオブジェクトに保存します。 オプションで、そのオブジェクトに指定したコメントを関連付けることができます。 下記に例を示します。

foo=> \lo_import '/home/peter/pictures/photo.xcf' 'a picture of me' lo_import 152801

上の応答は、指定したラージオブジェクトがオブジェクトID 152801として受け付けられたことを示します。 今後この新規作成されたラージオブジェクトにアクセスする場合に、この番号が使用できます。 可読性を高めるために、常に全てのオブジェクトに人間がわかるようなコメントを関連付けることが推奨されます。\lo_listコマンドではOIDとコメントの両方が表示されます。

このコマンドは、ローカルなユーザによってローカルなファイルシステムに対して動作します。一方、サーバ側のlo_importは、サーバのユーザによってサーバ上のファイルシステムに対して動作します。 このコマンドとサーバ側のlo_importは、この点で微妙に異なっています。

\lo_list

現在データベースに保存されている全てのPostgreSQLラージオブジェクトの一覧を、そのオブジェクトに付けられたコメントと一緒に表示します。

\lo_unlink _`loid`_

OIDが_loid_であるラージオブジェクトをデータベースから削除します。

ヒント

ラージオブジェクトのOIDを確認するには、\lo_listを使用してください。

\oまたは\out [ _`filename`_ ]
\oまたは\out [ |_`command`_ ]

以降の問い合わせの結果を、_filenameで指定されたファイルに保存するか、またはシェルコマンドcommand_にパイプで渡すようにします。 引数がない場合、問い合わせの出力はリセットされて標準出力になります。

「問い合わせの結果」には、全てのテーブル、コマンドの応答、データベースサーバからの注意メッセージだけでなく、データベースに問い合わせを行う(\dのような)各種バックスラッシュコマンドの出力が含まれます。ただし、エラーメッセージは含まれません。

ヒント

問い合わせの結果の間にテキストを挿入するには、\qechoを使用してください。

\pまたは\print

現在の問い合わせバッファを標準出力に書き出します。

\password [ _`username`_ ]

指定したユーザ(デフォルトは現在のユーザ)のパスワードを変更します。 このコマンドは、新しいパスワードを促し、暗号化して、それをALTER ROLEコマンドとしてサーバに送信します。 これによりコマンド履歴やサーバログなどどこにも新しいパスワードが平文では残りません。

\prompt [ _`text`_ ] _`name`_

変数_nameに代入するテキストを入力するようにユーザを促します。 プロンプトtext_をオプションで指定することができます。 (複数の単語をプロンプトで使用する場合はそのテキストを単一引用符でくくってください。)

デフォルトでは\promptは入出力に端末を使用します。 しかし、-fコマンドラインスイッチが使用されている場合、\promptは標準入力、標準出力を使用します。

\pset [ _`option`_ [ _`value`_ ] ]

このコマンドは問い合わせ結果のテーブル出力に影響するオプションを設定します。_optionには、どのオプションを設定するのかを記述します。valueの意味は選択したオプションにより変わります。 以下のオプション別の説明の通り、オプションの中にはvalueを省略することでトグルや設定解除を行うものがあります。 こうした動作の記載がなければ、value_を省略すると、単に現在の設定値が表示されることになります。

何も引数をつけずに\psetを実行すると、すべての表示オプションの現在の状態を表示します。

以下は、表示の調整に関するオプションです。

border

_value_は数値でなければなりません。 基本的には、この数字が大きくなればなるほど、表示するテーブルが持つ境界線は増えますが、詳細はそれぞれの出力形式に依存しています。HTML書式では、この値は直接border=...属性に反映されます。 他のほとんどの書式の場合は、0(境界線なし)、1(内側の境界線)、2(テーブル枠)という3つの数値のみ意味を持ち、2より大きな値はborder = 2と同じとして扱われます。latexおよびlatex-longtable書式では、さらにデータ行の間に境界線を付ける、3という値をとることができます。

columns

wrapped書式の対象幅を設定し、そして、ページャを必要とする、拡張自動モードにおける縦表示への切替えに十分な幅で出力するかどうかを決定する幅制限を設定します。 ゼロ(デフォルト)では、環境変数COLUMNS、もしCOLUMNSが設定されていなければ、検出したスクリーンの幅、により対象幅が制御されます。 さらにcolumnsがゼロの場合、wrapped書式はスクリーン出力にのみ影響を与えることになります。columnsが非ゼロの場合は、ファイルやパイプへの出力も同様に折り返されます。

expanded (またはx)

_valueを指定する場合は、拡張(expanded)モードを有効または無効にするonまたはoff、あるいはautoのいずれかでなければなりません。value_を省略した場合、このコマンドは通常モードと拡張モードの設定をトグルします。 拡張モードを有効にした場合、問い合わせ結果は左に列名、右にデータという2つの列で出力されます。 このモードは、データが通常の「水平(horizontal)」モードによる画面表示に適していない場合に有用です。 自動(auto)設定の場合、問い合わせの出力が2列以上でかつ画面幅より広ければ拡張モードが使用され、そうでなければ通常モードが使用されます。 自動設定は位置揃え書式または折り返し書式でのみ有効です。 この他の書式では、常に拡張モードが無効の場合と同様に動作します。

fieldsep

位置揃えなしの出力書式で使用されるフィールド区切り文字を指定します。 これにより、例えばタブ区切り、カンマ区切りといった他プログラムに要求される形式を作成することができます。 タブをフィールド区切り文字として使用するには、\pset fieldsep '\t'と入力します。 デフォルトのフィールド区切り文字は'|'(縦棒)です。

fieldsep_zero

位置揃えなしの出力書式で使用されるフィールド区切り文字をゼロバイトに指定します。

footer

valueを指定する場合、それぞれテーブルフッタの表示(`` (n rows) ``数)を有効にするonまたは無効にするoffのいずれかでなければなりません。_value_を省略した場合、このコマンドはフッタの表示、非表示をトグルします。

format

出力形式をunalignedalignedwrappedhtmlasciidoclatex (tabularを使用)、latex-longtableまたはtroff-ms.のいずれかに設定します。 一意に判別できる範囲で省略が可能です (つまり、1文字でも十分であるということです)。

unaligned書式は、表示行の1行に1つの行の全列を、現在有効なフィールド区切り文字で区切って書き出します。 これは他のプログラムに読み込ませることを目的とした出力(例えばタブ区切りやカンマ区切り書式)を生成する場合に有用です。

aligned書式は、標準的で人間が読みやすいように、美しく整形されたテキスト出力です。 これがデフォルトです。

wrapped書式はalignedと似ていますが、幅の広いデータ値を複数行に折り返して対象の列幅に合うように出力します。 対象の幅はcolumnsオプションの項に記述されているように決定されます。psqlは列ヘッダタイトルを折り返さないことに注意して下さい。 このためwrapped書式は列ヘッダに必要とする幅全体が対象より長い場合、alignedと動作が同じになります。

htmlasciidoclatexlatex-longtableおよびtroff-ms書式は対応するマークアップ言語を使用する文書内に含めることを目的とした表を出力します。 出力自体は完全な文書ではありません。HTMLでは必要性がないかもしれませんが、LaTeXでは完全な文書ラッパを持たせなければなりません。latex-longtableではLaTeXのlongtableおよびbooktabsパッケージも必要です。

linestyle

境界線の表示形式をasciiold-asciiまたはunicodeのいずれかに設定します。 一意になれば省略形が許されます。(つまり一文字で十分であることを意味します。) デフォルトの設定はasciiです。 このオプションはalignedおよびwrapped出力書式のみで有効です。

ascii形式は通常のASCIIを使用します。 データ内の改行は右側余白に+を使用して表します。wrapped書式で、改行文字のない行が2行にまたがるときは、先頭行の右側余白にドット(.)を表示し、次の行の左側余白にもドットを表示します。

old-ascii形式は通常のASCII文字を使用して、PostgreSQL 8.4以前で使用されていた方法で整形します。 データ内の改行は列区切りの左側に:記号を使用して表します。 データを改行文字なしに折り返す際には、列区切りの左側に;記号を使用して表します。

unicode形式はUnicode矩形描画文字を使用します。 データ内の改行は右側の余白に復帰記号を使用して表します。 データを改行文字なしに折り返す際には、省略記号を先頭行の右側余白に表示し、次の行の左側余白にも表示します。

border設定がゼロより大きい場合、linestyleオプションはまた、境界線を描画する文字も決定します。 通常のASCII文字はどのような場合でも動作しますが、Unicode文字が表示できる環境では、その方が見た目が良くなります。

null

null値の代わりに表示する文字列を設定します。 デフォルトでは何も表示しません。 そのため、よく空の文字列と間違うことがあります。 例えば\pset null '(null)'とする人もいます。

numericlocale

_valueを指定する場合、それぞれ10進数マーカの左に桁のくくりを分離するロケール固有の文字を表示するonまたは表示しないoffのいずれかでなければなりません。value_を省略した場合、このコマンドは通常出力かロケール固有の数値出力かをトグルします。

pager

問い合わせおよびpsqlのヘルプを出力する際の、ページャプログラムの使用を制御します。 環境変数PAGERが設定されている場合、出力は指定したプログラムにパイプで渡されます。PAGERが設定されていない場合は、プラットフォーム依存のデフォルト(moreなど)が使用されます。

pagerオプションがoffの場合、ページャプログラムは使用されません。pagerオプションがonの場合、ページャは適切な場合、つまり出力先が端末であり、その画面に収まらない場合に使用されます。 またpagerオプションはalwaysに設定することもできます。 こうすると画面に収まるかどうかに関わらずすべての端末出力でページャが使用されます。_value_を指定しない\pset pagerはページャの使用をトグルします。

pager_min_lines

pager_min_linesがページ高より大きな数に設定されている場合、少なくともこれに設定されている行数の出力がなければ、ページャプログラムを呼び出しません。 デフォルトの設定は0です。

recordsep

位置揃えなしの出力書式で使用されるレコード(行)の区切り文字を指定します。 デフォルトは改行文字です。

recordsep_zero

位置揃えなしの出力書式で使用されるレコードの区切り文字をゼロバイトに指定します。

tableattr (または T)

html出力書式では、これはtableタグ内に記述する属性を指定します。 これを使用して、例えば、cellpaddingbgcolorを指定することができます。border属性は既に\pset borderによって処理されているので、このコマンドでborderを指定する必要はないでしょう。_value_の指定がない場合、テーブル属性の設定は解除されます。

latex-longtable書式では、これは 左揃えされたデータ型を含む各列の幅の比率を制御します。 空白文字で区切られた値のリスト、例えば'0.2 0.2 0.6'として指定します。 指定がない出力列は最後に指定された値を使用します。

title (または C)

今後表示される全てのテーブル用にテーブルタイトルを設定します。 これは出力に説明のためのタグを付けたい場合に有用です。_value_がない場合、タイトルの設定が解除されます。

tuples_only (または t)

_valueを指定する場合、それぞれタプルのみの表示を有効にする、onまたは無効にするoffのいずれかでなければなりません。value_を省略した場合、このコマンドはタプルのみの表示と通常表示をトグルします。 通常表示では列のヘッダ、タイトル、各種フッタなどのその他の情報が追加されます。 タプルのみのモードでは、テーブルの実データのみが表示されます。

unicode_border_linestyle

unicodeの線の形式の境界の形式をsingleまたはdoubleのどちらかに設定します。

unicode_column_linestyle

unicodeの線の形式の列の形式をsingleまたはdoubleのどちらかに設定します。

unicode_header_linestyle

unicodeの線の形式のヘッダの形式をsingleまたはdoubleのどちらかに設定します。

節に、これらの書式がどのように見えるかを示した図があります。

ヒント

\psetには各種のショートカットコマンドがあります。\a\C\H\t\T\xを参照してください。

\qまたは\quit

psqlプログラムを終了します。 スクリプトファイルでは、そのスクリプトの実行のみが終了します。

\qecho _`text`_ [ ... ]

このコマンドは、\echoと同じです。 ただし、出力が\oにより設定された問い合わせ出力チャネルに書き出される点が異なります。

\rまたは\reset

問い合わせバッファをリセット(クリア)します。

\s [ _`filename`_ ]

psqlのコマンドラインの履歴を_filenameに出力します。filename_が省略された場合、履歴は標準出力に書き出されます(適切であればページャを使います)。 このコマンドは、psqlがReadlineサポートなしの状態でビルドされた場合は利用できません。

\set [ _`name`_ [ _`value`_ [ ... ] ] ]

psqlの変数_namevalue_、または複数のvalueが与えられた場合はそれらを連結したものに設定します。 第一引数しか指定されない場合は、変数に空の値を設定されます。 変数を未設定とするには、\unsetコマンドを使用してください。

引数をまったく取らない\setは、現在設定されているpsql変数すべての名前と値を表示します。

変数名には、文字、数字、アンダースコアを使用することができます。 詳細は、後述の変数を参照してください。 変数名は大文字小文字を区別します。

必要ならば任意の変数に任意の値を設定できますが、psqlはいくつかの変数を特別なものとして扱っています。 これらについては変数に関する節にて説明します。

注記

このコマンドはSQLのSETコマンドとは関係ありません。

\setenv _`name`_ [ _`value`_ ]

環境変数_namevalueに設定します。value_が与えられない場合は、その環境変数を未設定状態にします。 以下に例を示します。

testdb=> \setenv PAGER less testdb=> \setenv LESS -imx4F

\sf[+] _`functiondescription`_

このコマンドは、CREATE OR REPLACE FUNCTIONコマンドの形式で、指定された関数の定義を抽出し表示します。 この定義は、\oで設定された現在の問い合わせ出力チャネルに出力されます。

対象の関数は、名前だけまたは、例えばfoo(integer, text)のように名前と引数で指定することができます。 同じ名前の関数が複数存在する場合は、引数の型を指定しなければなりません。

コマンド名に+を付けると、出力行に関数本体の先頭行を1行目と数える行番号が付けられます。

\sv[+] _`viewname`_

このコマンドは、指定したビューの定義をCREATE OR REPLACE VIEWコマンドの形式で取得して表示します。 定義は現在の問い合わせの出力チャネルに表示されます。 これは\oで設定できます。

コマンド名の後に+が付加された場合は、出力行に1から番号が付けられます。

\t

出力列名ヘッダと行数フッタの表示を切り替えます。 このコマンドは\pset tuples_onlyと同じで、簡便性のために用意されています。

\T _`tableoptions`_

HTML出力書式におけるtableタグ内部に記述する属性を指定します。 このコマンドは\pset tableattr _`tableoptions`_と同じ効力を持ちます。

\timing [ _`on`_ | _`off`_ ]

パラメータがない場合、各SQL文にかかる時間(ミリ秒単位)の表示の有無を切り替えます。 パラメータがある場合、指定した通りに設定します。

\unset _`name`_

psql変数_name_を未設定状態にします(削除します)。

\wまたは\write filename
\wまたは\write | command

現在の問い合わせバッファを、_filenameファイルに出力するか、もしくは、シェルコマンドcommand_にパイプで渡します。

\watch [ _`seconds`_ ]

中断するか問い合わせが失敗するまで、現在の問い合わせバッファを繰り返し(\gと同じように)実行します。 実行の間に指定秒数(デフォルトは2)の休止が入ります。 各問い合わせの結果には、\pset titleの文字列(あれば)、問い合わせ開始時の時刻、および遅延間隔を含むヘッダとともに表示されます。

\x [ _`on`_ | _`off`_ | _`auto`_ ]

拡張テーブル形式モードを設定またはトグルします。 従って、このコマンドは\pset expandedと同じ効力を持ちます。

\z [ [_pattern_](app-psql.html#app-psql-patterns "パターン") ]

テーブル、ビュー、シーケンスを、関連付けられているアクセス権限とともに一覧表示します。_pattern_を指定すると、パターンに名前がマッチするテーブル、ビュー、シーケンスのみが表示されます。

これは\dp(「権限の表示(display privileges)」)の別名です。

\! [ _`command`_ ]

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

\? [ _`topic`_ ]

ヘルプ情報を表示します。 オプションの_topic_パラメータ(デフォルトはcommands)はpsqlのどの部分を説明するかを選択します。commandsはpsqlのバックスラッシュコマンドについて、optionsはpsqlに渡すことができるコマンド行オプションについて、variablesはpsqlの設定変数についてのヘルプを表示します。

パターン

各種\dコマンドでは、_pattern_パラメータを渡して、表示するオブジェクト名を指定することができます。 最も単純な場合では、パターンが正確にオブジェクト名に一致します。 パターン内の文字は、SQLの名前と同様、通常小文字に変換されます。 例えば\dt FOOfooという名前のテーブルを表示します。 SQLの名前と同様、パターンを二重引用符で括ることで小文字への変換が取り止められます。 二重引用符自体をパターン内に含めなければならない場合、二重引用符で括った文字列の中で二重引用符を二重に記載してください。 これもSQLの引用符付き識別子の規則に従ったものです。 例えば、\dt "FOO""BAR"FOO"BARという名前のテーブルを表示します(foo"barではありません)。 SQLの名前と異なり、パターンの一部を二重引用符で括ることができます。 例えば、\dt FOO"FOO"BARfooFOObarという名前のテーブルを表示します。

_pattern_パラメータが完全に省略されている場合、\dコマンドは現在のスキーマ検索パス内で可視のオブジェクトを全て表示します。 これは*というパターンを使用することと同じです。 (オブジェクトを含むスキーマが検索パス上にあり、同じ種類かつ同じ名前のオブジェクトが検索パス上それより前に存在しない場合、そのオブジェクトは_可視_であるといいます。 これは明示的なスキーマ修飾がない名前でオブジェクトを参照できるということと同じです。) 可視か否かに関わらずデータベース内の全てのオブジェクトを表示するには、*.*というパターンを使用します。

パターン内部では、*は(0文字を含む)任意の文字の並びにマッチし、?は任意の1文字にマッチします。 (この記法はUnixシェルのファイル名パターンと似ています。) 例えば、\dt int*は、intから始まる名前を持つテーブルを表示します。 しかし、二重引用符の中では、*?はその特別な意味を失い、文字そのものにマッチします。

ドット(.)を含むパターンは、スキーマ名にオブジェクト名が続くパターンとして解釈されます。 例えば、\dt foo*.*bar*は、スキーマ名がfooで始まるスキーマ内のテーブル名がbarを含むテーブルを全て表示します。 ドットがない場合、パターンは現行のスキーマ検索パス内で可視的なオブジェクトのみにマッチします。 ここでも、二重引用符で括られた文字列内のドットは特別な意味を失い、文字そのものにマッチすることになります。

上級者は文字クラス(例えば任意の数にマッチする[0-9])などの正規表現を使用することができます。 ほぼすべての正規表現の特殊文字は9.7.3. POSIX正規表現の規定通りに動作しますが、上述のように.が区切り文字となる点、*は正規表現の.*になる点、?.になる点、$がそのまま扱われる点は例外です。.の代わりに?と、_`R`_*の代わりに(_`R`_+|)と、_`R`_?の代わりに(_`R`_|)と記述することで、これらのパターン文字を模擬することができます。 通常の正規表現の解釈と異なり、パターンは常に名前全体にマッチするため、$を正規表現文字として扱う必要はありません。 (言い替えると、$は自動的にパターンに追加されます。) パターンの適用位置を決められない場合は、*を先頭や末尾に記載してください。 二重引用符の内側では、正規表現の特殊文字はその意味を失い、文字そのものにマッチすることになる点に注意してください。 また、正規表現の特殊文字は、演算子名のパターン(つまり\doの引数)では文字そのものにマッチします。