PostgreSQL的\d命令能否仅返回单个列的输出?
在psql中仅显示表的列名(替代\d命令的单列输出)
psql自带的\d系列命令没法直接指定只输出单个列(比如仅列名),但可以通过以下几种方法实现类似需求:
方法1:直接查询系统信息表
这是最灵活可控的方式,从PostgreSQL的系统目录中精准提取列名:
SELECT column_name FROM information_schema.columns WHERE table_schema = 'public' AND table_name = 'users';
如果想要接近\d的带边框格式,可以搭配psql的格式化参数:
psql -c "SELECT column_name AS \"Column\" FROM information_schema.columns WHERE table_schema='public' AND table_name='users';" -A -P footer=off -P border=2
执行后会输出带简单边框的列名列表,和你期望的格式一致。
方法2:启用psql的扩展显示模式
如果只是想在窄终端里更清晰查看信息,不用严格单列输出,可以开启\x模式:
\x on \d users
此时每个列的属性会以键值对形式单独成行,避免因列数过多导致的排版混乱。
方法3:通过文本工具过滤\d的输出
要是你更习惯用\d命令,可以结合管道和awk这类工具提取列名:
psql -c "\d users" | awk 'NR>2 && $1 != "" {print $1}'
这个命令会跳过\d输出的表头和空行,只提取第一列的列名。
内容的提问来源于stack exchange,提问作者machineghost
相关产品推荐
相关产品推荐

