\xで展開表示に切り替える

psqlの\xメタコマンドは、クエリ結果の表示形式を通常の横持ち表示と展開表示(縦持ち表示)の間でトグルする。列数が多いテーブルや、値が長くて横に折り返されてしまう結果を確認する場合に使う。

testdb=# \x
Expanded display is on.
testdb=# SELECT * FROM users;
-[ RECORD 1 ]------------
id    | 1
name  | alice
email | alice@example.com
-[ RECORD 2 ]------------
id    | 2
name  | bob
email | bob@example.com

1レコードごとに-[ RECORD n ]という見出しが入り、列名と値が1行ずつ縦に並ぶ。もう一度\xを実行すると通常表示に戻る。

testdb=# \x
Expanded display is off.
testdb=# SELECT * FROM users;
 id | name  |       email
----+-------+-------------------
  1 | alice | alice@example.com
  2 | bob   | bob@example.com
(2 rows)

\x autoで結果に応じて自動的に切り替える

\x autoを指定すると、通常表示のままだと行の幅が表示幅を超える場合にだけ自動的に展開表示へ切り替わる。手動でオン/オフを切り替える手間がなくなる。

表示幅は\pset columnsで明示的に指定できる。ターミナルの幅を検出できない環境(パイプやリダイレクト経由の実行など)では、\pset columnsを指定しない限り無制限として扱われ、\x autoは展開表示に切り替わらない。

testdb=# \pset columns 40
Target width is 40.
testdb=# \x auto
Expanded display is used automatically.
testdb=# SELECT id, name, email, created_at FROM users;
-[ RECORD 1 ]-----------------------------
id         | 1
name       | alice
email      | alice@example.com
created_at | 2026-09-19 22:04:02.583527+09
-[ RECORD 2 ]-----------------------------
id         | 2
name       | bob
email      | bob@example.com
created_at | 2026-09-19 22:04:02.583527+09

同じ設定のまま列数の少ないクエリを実行すると、幅に収まるため通常表示のままになる。

testdb=# SELECT id, name FROM users;
 id | name
----+-------
  1 | alice
  2 | bob
(2 rows)

Expanded display is used automatically.というメッセージは\x autoを設定した時点で一度だけ表示され、実際にどちらの形式で表示されたかは結果を見て判断する。

\pset expandedでも同じ設定ができる

\x\pset expandedの短縮形である。on/off/autoを明示的に指定する場合はこちらを使う。

testdb=# \pset expanded on
Expanded display is on.
testdb=# \pset expanded auto
Expanded display is used automatically.
testdb=# \pset expanded off
Expanded display is off.

\x単体を繰り返し実行するとon/offのトグルにしかならないため、autoを明示的に指定したい場合は\x autoまたは\pset expanded autoを使う。

起動時から展開表示にする

psqlの起動オプション-x(--expanded)を付けると、最初から展開表示で開始する。

$ psql -x -d testdb -c "SELECT id, name FROM users LIMIT 1;"
-[ RECORD 1 ]
id   | 1
name | alice

-cで1回だけクエリを実行する場合や、常に展開表示で確認したい運用では-xを付けておくと\xを入力する手間が省ける。~/.psqlrc\x autoを書いておけば、対話セッションでも起動時から自動切り替えが有効になる。

\x auto

具体例: 列の多いテーブルを確認する

列数の多いテーブルやビューをSELECT *で確認すると、通常表示では折り返しが多く読みにくい。

testdb=# \pset expanded on
testdb=# SELECT * FROM pg_stat_activity WHERE pid = pg_backend_pid();
-[ RECORD 1 ]----+-------------------------------------------------------------
datid            | 16565
datname          | testdb
pid              | 72044
leader_pid       |
usesysid         | 10
usename          | postgres
application_name | psql
client_addr      |
client_hostname  |
client_port      | -1
backend_start    | 2026-09-19 22:08:42.274503+09
xact_start       | 2026-09-19 22:08:42.279351+09
query_start      | 2026-09-19 22:08:42.279351+09
state_change     | 2026-09-19 22:08:42.279361+09
wait_event_type  |
wait_event       |
state            | active
backend_xid      |
backend_xmin     | 1255
query_id         |
query            | SELECT * FROM pg_stat_activity WHERE pid = pg_backend_pid();
backend_type     | client backend

pg_stat_activityのように列数が多いシステムビューを確認する場合は、展開表示にしておくと1列ずつ確認しやすい。

参考: 【PostgreSQL】pg_stat_activityで実行中クエリとロック待ちを確認する

参考