PostgreSQL psqlのメタコマンドについてメモ書き。
概要
PostgreSQLのpsqlメタコマンドについて記載。バックスラッシュから始まるのでバックスラッシュコマンドとも言う。
メタコマンドはたくさんあるので、少しづつ確認していく。
詳しく知りたい方は本家サイトへ。
psqlメタコマンド
\pset
出力フォーマットを設定する。
psqlで問い合わせすると、通常は”|”で出力される。
# select * from test_table ;
int | str
-----+------
1 | test
(1 row)
formatオプション
出力フォーマットを設定。
# htmlで出力
testuser=# \pset format html
Output format is html.
testuser=# select * from test_table ;
<table border="1">
<tr>
<th align="center">int</th>
<th align="center">str</th>
</tr>
<tr valign="top">
<td align="right">1</td>
<td align="left">test</td>
</tr>
</table>
<p>(1 row)<br />
</p>
# デフォルトの出力形式はaligned
testuser=# \pset format aligned
Output format is aligned.
testuser=# select * from test_table ;
int | str
-----+------
1 | test
(1 row)
# unalignedで出力
testuser=# \pset format unaligned
Output format is unaligned.
testuser=# select * from test_table;
int|str
1|test
(1 row)
# csvで出力
testuser=# \pset format csv
Output format is csv.
testuser=# select * from test_table ;
int,str
2,test2
1,test1
borderオプション
境界線を設定。
# border:0は境界線なし
testuser=# \pset border 0
Border style is 0.
testuser=# select * from test_table;
int str
--- ----
1 test
(1 row)
# border:1は境界線を設定
testuser=# \pset border 1
Border style is 1.
testuser=# select * from test_table;
int | str
-----+------
1 | test
(1 row)
¥ border:2は境界線と外枠を設定
testuser=# \pset border 2
Border style is 2.
testuser=# select * from test_table;
+-----+------+
| int | str |
+-----+------+
| 1 | test |
+-----+------+
(1 row)
expandedオプション
出力形式を縦方向、横方向に切り替える。
# カラムを縦方向に設定
testuser=# \pset expanded
Expanded display is on.
testuser=# select * from test_table;
+-[ RECORD 1 ]-+
| int | 1 |
| str | test |
+-[ RECORD 2 ]-+
| int | 2 |
| str | test2 |
+-----+-------+
# カラムを横方向に戻す
testuser=# \pset expanded
Expanded display is off.
testuser=# select * from test_table;
+-----+-------+
| int | str |
+-----+-------+
| 1 | test |
| 2 | test2 |
+-----+-------+
(2 rows)
fieldsepオプション
位置揃えをしない時の区切り文字を設定する。
位置揃え有り無しは「\a」で切り替える。
「\pset format unaligned」で明示的に位置揃え無しを指定できる。
# 位置揃え無しに切り替え
testuser=# \a
Output format is unaligned.
testuser=# select * from test_table ;
int|str
2|test2
1|test1
(2 rows)
# 区切り文字を","にする
testuser=# \pset fieldsep ,
Field separator is ",".
testuser=# select * from test_table ;
int,str
2,test2
1,test1
(2 rows)
tuples_onlyオプション
テーブルの実データのみを出力する。
「t」は省略形。
# タプルオンリーを設定するとヘッダー、フッター等が出力されない
testuser=# \pset t
Tuples only is on.
testuser=# select * from test_table ;
2 | test2
1 | test1
fieldsep_zeroオプション
位置揃え無しの時、区切り文字を無くす。
# fieldsep_zeroを設定
testuser=# \pset fieldsep_zero
Field separator is zero byte.
# 位置揃え有り
testuser=# select * from test_table ;
int | str
-----+-------
2 | test2
1 | test1
(2 rows)
# 位置揃え無し
testuser=# \pset format unaligned
Output format is unaligned.
# カラム間の区切り文字が無くなる
testuser=# select * from test_table ;
intstr
2test2
1test1
(2 rows)
testuser=#
footerオプション
フッターの有り無しを切り替える
# フッターを無しに変更
testuser=# \pset footer off
testuser=# select * from test_table;
int | str
-----+-------
2 | test2
1 | test1
# フッター有りに変更
testuser=# \pset footer on
testuser=# select * from test_table;
int | str
-----+-------
2 | test2
1 | test1
(2 rows)
nullオプション
nullと分かるよう値を設定。
# nullオプションが設定されていない場合
testuser=# select * from test_table;
int | str
-----+-------
2 | test2
1 | test1
3 |
(3 rows)
# nullの場合に「null」を表示するよう設定
testuser=# \pset null 'null'
Null display is "null".
testuser=# select * from test_table;
int | str
-----+-------
2 | test2
1 | test1
3 | null
(3 rows)
pagerオプション
出力結果が端末に表示しきれなかった場合のページ設定。
# デフォルトはon。画面に表示しきれなかった場合はmore等のページャーで出力を制御する
testuser=# \dS+
List of relations
Schema,Name,Type,Owner,Persistence,Size,Description
pg_catalog,pg_aggregate,table,testuser,permanent,56 kB,
pg_catalog,pg_am,table,testuser,permanent,40 kB,
pg_catalog,pg_amop,table,testuser,permanent,80 kB,
pg_catalog,pg_amproc,table,testuser,permanent,64 kB,
pg_catalog,pg_attrdef,table,testuser,permanent,8192 bytes,
pg_catalog,pg_attribute,table,testuser,permanent,456 kB,
pg_catalog,pg_auth_members,table,testuser,permanent,40 kB,
pg_catalog,pg_authid,table,testuser,permanent,48 kB,
--More--
# オフにすると出力を制御しない
testuser=# \pset pager off
Pager usage is off.
testuser=# \dS+
List of relations
Schema,Name,Type,Owner,Persistence,Size,Description
pg_catalog,pg_aggregate,table,testuser,permanent,56 kB,
pg_catalog,pg_am,table,testuser,permanent,40 kB,
~~~
~~~
pg_catalog,pg_user_mappings,view,testuser,permanent,0 bytes,
pg_catalog,pg_views,view,testuser,permanent,0 bytes,
public,test_table,table,testuser,permanent,8192 bytes,
(130 rows)
コメント