【PostgreSQL】メタコマンドを纏めていく

## 初めに
Qiita Engineer Festa 2024が開催されました！早速参加。そしてやるならば完走賞を目指していきます。
そのためにPostgreSQLで利用できるメタコマンドについて利用も含めて他の記事に纏めていきます。この記事にはメタコマンドと簡単な説明の一覧を纏めておきました。
随時コマンド名にリンクを追加してきますのでご活用ください。

## 環境
PostgreSQL 15.6

## メタコマンド一覧
### General
| コマンド | 説明 |
| --- | --- |
| \copyright | PostgreSQLの使用と配布条件を表示 |
| [\crosstabview [COLUMNS]](https://qiita.com/dai_chi/items/7f82cb6ecf4578e8c80d) | クエリを実行し、結果をクロス集計表形式で表示 |
| [\errverbose](https://qiita.com/dai_chi/items/fa4b3d9312c4c1399c77) | 直近のエラーメッセージを最大限の詳細で表示 |
| [\g [(OPTIONS)] [FILE]](https://qiita.com/dai_chi/items/f3a7612d519fa5803cf7) | クエリを実行し、結果をファイルまたはパイプに送信 |
| [\gdesc](https://qiita.com/dai_chi/items/071fdd91439ab7d412bd) | クエリの結果を実行せずに説明 |
| [\gexec](https://qiita.com/dai_chi/items/e70e450182cc55f57ac9) | クエリを実行し、結果の各値を個別に実行 |
| \gset [PREFIX] | クエリを実行し、結果をpsql変数に格納 |
| \gx [(OPTIONS)] [FILE] | \gと同様だが、強制的に拡張出力モードを使用 |
| \q | psqlを終了 |
| [\watch [SEC]]() | クエリを指定秒数ごとに実行 |

### Help
| コマンド | 説明 |
| --- | --- |
| [\\? [commands]](https://qiita.com/dai_chi/items/babfdaaf4354231a30d0) | メタコマンドのヘルプを表示 |
| [\\? options](https://qiita.com/dai_chi/items/babfdaaf4354231a30d0) | psqlのコマンドラインオプションのヘルプを表示 |
| [\\? variables](https://qiita.com/dai_chi/items/babfdaaf4354231a30d0) | 特殊変数のヘルプを表示 |
| [\h [NAME]](https://qiita.com/dai_chi/items/fcd571726590872e354a) | SQLコマンドの構文に関するヘルプを表示、すべてのコマンドは* |

### Query Buffer
| コマンド | 説明 |
| --- | --- |
| \e [FILE] [LINE] | 外部エディタでクエリバッファ（またはファイル）を編集 |
| \ef [FUNCNAME [LINE]] | 外部エディタで関数定義を編集 |
| \ev [VIEWNAME [LINE]] | 外部エディタでビュー定義を編集 |
| \p | クエリバッファの内容を表示 |
| \r | クエリバッファをリセット（クリア） |
| [\s [FILE]](https://qiita.com/dai_chi/items/5459bed93ec04355567f) | 履歴を表示またはファイルに保存 |
| \w FILE | クエリバッファをファイルに書き出す |

### Input/Output
| コマンド | 説明 |
| --- | --- |
| [\copy ...](https://qiita.com/dai_chi/items/457f527107f0c37ebf49) | クライアントホストへのデータストリームを伴うSQL COPYを実行 |
| [\echo [-n] [STRING]](https://qiita.com/dai_chi/items/06a0a6bff93968a1d83a) | 標準出力に文字列を書き込む（-nで改行なし） |
| [\i FILE](https://qiita.com/dai_chi/items/39c0b3fe89eb262e6640) | ファイルからコマンドを実行 |
| \ir FILE | \iと同様だが、現在のスクリプトの場所から相対的に |
| [\o [FILE]]() | すべてのクエリ結果をファイルまたはパイプに送信 |
| \qecho [-n] [STRING] | \o出力ストリームに文字列を書き込む（-nで改行なし） |
| \warn [-n] [STRING] | 標準エラー出力に文字列を書き込む（-nで改行なし） |

### Conditional

| コマンド | 説明 |
| --- | --- |
| [\if EXPR](https://qiita.com/dai_chi/items/681c1035c95572374f0e) | 条件付きブロックを開始 |
| [\elif EXPR](https://qiita.com/dai_chi/items/681c1035c95572374f0e) | 現在の条件付きブロック内の代替 |
| [\else](https://qiita.com/dai_chi/items/681c1035c95572374f0e) | 現在の条件付きブロック内の最終代替 |
| [\endif](https://qiita.com/dai_chi/items/681c1035c95572374f0e) | 条件付きブロックを終了 |

### Informational
| コマンド | 説明 |
| --- | --- |
| [\d[S+]](https://qiita.com/dai_chi/items/cc4803fd5d6307219a09) | テーブル、ビュー、シーケンスを一覧表示 |
| [\d[S+]  NAME]() | テーブル、ビュー、シーケンス、インデックスの説明を表示 |
| \da[S]  [PATTERN] | 集約関数を一覧表示 |
| \dA[+]  [PATTERN] | アクセスメソッドを一覧表示 |
| \dAc[+] [AMPTRN [TYPEPTRN]] | 演算子クラスを一覧表示 |
| \dAf[+] [AMPTRN [TYPEPTRN]] | 演算子ファミリーを一覧表示 |
| \dAo[+] [AMPTRN [OPFPTRN]] | 演算子ファミリーの演算子を一覧表示 |
| \dAp[+] [AMPTRN [OPFPTRN]] | 演算子ファミリーのサポート関数を一覧表示 |
| \db[+]  [PATTERN] | テーブルスペースを一覧表示 |
| \dc[S+] [PATTERN] | 変換を一覧表示 |
| [\dconfig[+] [PATTERN]](https://qiita.com/dai_chi/items/d70bdb68470d0bae4637) | 設定パラメータを一覧表示 |
| [\dC[+]  [PATTERN]](https://qiita.com/dai_chi/items/0f57ace8ab45dbf916ac) | キャストを一覧表示 |
| \dd[S]  [PATTERN] | 他の場所で表示されないオブジェクト説明を表示 |
| \dD[S+] [PATTERN] | ドメインを一覧表示 |
| \ddp    [PATTERN] | デフォルト権限を一覧表示 |
| \dE[S+] [PATTERN] | 外部テーブルを一覧表示 |
| \des[+] [PATTERN] | 外部サーバを一覧表示 |
| \det[+] [PATTERN] | 外部テーブルを一覧表示 |
| \deu[+] [PATTERN] | ユーザーマッピングを一覧表示 |
| \dew[+] [PATTERN] | 外部データラッパーを一覧表示 |
| \df[anptw][S+] [FUNCPTRN [TYPEPTRN ...]] | [集約/通常/プロシージャ/トリガー/ウィンドウ]関数のみを一覧表示 |
| \dF[+]  [PATTERN] | テキスト検索設定を一覧表示 |
| \dFd[+] [PATTERN] | テキスト検索辞書を一覧表示 |
| \dFp[+] [PATTERN] | テキスト検索パーサーを一覧表示 |
| \dFt[+] [PATTERN] | テキスト検索テンプレートを一覧表示 |
| [\dg[S+] [PATTERN]](https://qiita.com/dai_chi/items/6eebcb53957f8ee4e60d) | ロールを一覧表示 |
| [\di[S+] [PATTERN]](https://qiita.com/dai_chi/items/274667610fdadf5e6c49) | インデックスを一覧表示 |
| [\dl[+]](https://qiita.com/dai_chi/items/9ba1a1cca84f53614db0) | ラージオブジェクトを一覧表示（\lo_listと同じ） |
| \dL[S+] [PATTERN] | プロシージャ言語を一覧表示 |
| \dm[S+] [PATTERN] | マテリアライズドビューを一覧表示 |
| [\dn[S+] [PATTERN]](https://qiita.com/dai_chi/items/30286602970d4c5e043d) | スキーマを一覧表示 |
| \do[S+] [OPPTRN [TYPEPTRN [TYPEPTRN]]] | 演算子を一覧表示 |
| \dO[S+] [PATTERN] | 照合を一覧表示 |
| [\dp     [PATTERN]](https://qiita.com/dai_chi/items/f089b9df66f677732059) | テーブル、ビュー、シーケンスのアクセス権限を一覧表示 |
| \dP[itn+] [PATTERN] | [インデックス/テーブル]のパーティション分割リレーションを一覧表示 [n=ネスト] |
| \drds [ROLEPTRN [DBPTRN]] | データベースごとのロール設定を一覧表示 |
| \dRp[+] [PATTERN] | レプリケーション出版を一覧表示 |
| \dRs[+] [PATTERN] | レプリケーションサブスクリプションを一覧表示 |
| [\ds[S+] [PATTERN]](https://qiita.com/dai_chi/items/4c6d94318273caa05932) | シーケンスを一覧表示 |
| [\dt[S+] [PATTERN]](https://qiita.com/dai_chi/items/c8df21712bacf2315728) | テーブルを一覧表示 |
| \dT[S+] [PATTERN] | データ型を一覧表示 |
| [\du[S+] [PATTERN]](https://qiita.com/dai_chi/items/1aadb52a2fbb37d48a13) | ロールを一覧表示 |
| [\dv[S+] [PATTERN]]() | ビューを一覧表示 |
| [\dx[+]  [PATTERN]](https://qiita.com/dai_chi/items/3f5b189d8c46007f2cf7) | 拡張機能を一覧表示 |
| \dX     [PATTERN] | 拡張統計を一覧表示 |
| \dy[+]  [PATTERN] | イベントトリガーを一覧表示 |
| \l[+]   [PATTERN] | データベースを一覧表示 |
| \sf[+]  FUNCNAME | 関数の定義を表示 |
| \sv[+]  VIEWNAME | ビューの定義を表示 |
| \z      [PATTERN] | \dpと同じ |

### Large Objects
| コマンド | 説明 |
| --- | --- |
| \lo_export LOBOID FILE | ラージオブジェクトをファイルに書き出す |
| \lo_import FILE [COMMENT] | ファイルからラージオブジェクトを読み込む |
| \lo_list[+] | ラージオブジェクトを一覧表示 |
| \lo_unlink LOBOID | ラージオブジェクトを削除 |

### Formatting
| コマンド | 説明 |
| --- | --- |
| [\a](https://qiita.com/dai_chi/items/70ebe2400d3f67f37091) | 非整列モードと整列モードを切り替える |
| \C [STRING] | テーブルタイトルを設定または解除 |
| \f [STRING] | 非整列クエリ出力のフィールドセパレータを表示または設定 |
| \H | HTML出力モードを切り替え（現在はオフ） |
| \pset [NAME [VALUE]] | テーブル出力オプションを設定 |
| \t [on \| off] | 行のみを表示 (現在オフ) |
| \T [STRING] | HTMLの\<table\>タグの属性を設定または解除 |
| \x [on \| off] | 拡張出力を切り替えます (現在オフ) |


### Connection
| コマンド | 説明 |
| --- | --- |
| \c[onnect] {[DBNAME\|- USER\|- HOST\|- PORT\|-] \| conninfo} | connect to new database (currently "xxx") |
| [\conninfo](https://qiita.com/dai_chi/items/8f5402cb2542f3e10b17) | 現在の接続情報を表示 |
| \encoding [ENCODING] | クライアントエンコーディングを表示または設定 |
| \password [USERNAME] | ユーザーのパスワードを安全に変更 |

### Operating System

| コマンド | 説明 |
| --- | --- |
| [\cd [DIR]](https://qiita.com/dai_chi/items/401537c58743fa958fd0) | 現在の作業ディレクトリを変更 |
| [\getenv PSQLVAR ENVVAR](https://qiita.com/dai_chi/items/80c6b76ec9e59637b56e) | 環境変数を取得 |
| [\setenv NAME [VALUE]](https://qiita.com/dai_chi/items/ab3e53701169b240bd56) | 環境変数を設定または解除 |
| [\timing [on \| off]](https://qiita.com/dai_chi/items/be8730b942dddd508347) | コマンドのタイミングを切り替える (現在オフ) |
| [\\! [COMMAND]](https://qiita.com/dai_chi/items/2a2fa119c15c39b6cb42) | シェルでコマンドを実行またはインタラクティブシェルを開始 |

### Variables

| コマンド | 説明 |
| --- | --- |
| [\prompt [TEXT] NAME](https://qiita.com/dai_chi/items/6c3ad8ffd5ff5779c174) | ユーザーに内部変数を設定するよう促す |
| [\set [NAME [VALUE]]](https://qiita.com/dai_chi/items/692402b055bf3803850a) | 内部変数を設定またはパラメータがない場合はすべて一覧表示 |
| [\unset NAME]() | 内部変数を解除（削除） |


## 参考
[PostgreSQL 15.4：psql](https://www.postgresql.jp/docs/15/app-psql.html)