显示 psql 内部用于显示数据库元信息的 SQL 命令

场景:你想了解更多关于 系统目录 的信息,或者想了解psql如何与后端交互。 psql 使用各种 SQL 语句来生成各种命令的输出\d斜杠命令,但输出通常是隐藏的。

解决方案

  • 使用命令行选项-E启动 psql
  • (在 psql 运行时) 设置ECHO_HIDDEN为非零整数值

任一方法都会导致psql显示其生成的 SQL。请注意,如果 ECHO_HIDDEN 设置为 noexec,SQL 将被显示但不会执行(这将有效地禁用信息性斜杠命令)。

elephant~$ psql -U postgres -E
psql (9.2.3)
Type "help" for help.

postgres=# \l
********* QUERY **********
SELECT d.datname as "Name",
       pg_catalog.pg_get_userbyid(d.datdba) as "Owner",
       pg_catalog.pg_encoding_to_char(d.encoding) as "Encoding",
       d.datcollate as "Collate",
       d.datctype as "Ctype",
       pg_catalog.array_to_string(d.datacl, E'\n') AS "Access privileges"
FROM pg_catalog.pg_database d
ORDER BY 1;
**************************

                                     List of databases
      Name       |   Owner   | Encoding |   Collate   |    Ctype    |   Access privileges   
-----------------+-----------+----------+-------------+-------------+-----------------------
 template0       | postgres  | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
                 |           |          |             |             | postgres=CTc/postgres
 template1       | postgres  | UTF8     | en_US.UTF-8 | en_US.UTF-8 | postgres=CTc/postgres+
                 |           |          |             |             | =c/postgres
 testdb          | testuser  | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
(3 rows)

postgres=# \set ECHO_HIDDEN noexec
postgres=# \l
********* QUERY **********
SELECT d.datname as "Name",
       pg_catalog.pg_get_userbyid(d.datdba) as "Owner",
       pg_catalog.pg_encoding_to_char(d.encoding) as "Encoding",
       d.datcollate as "Collate",
       d.datctype as "Ctype",
       pg_catalog.array_to_string(d.datacl, E'\n') AS "Access privileges"
FROM pg_catalog.pg_database d
ORDER BY 1;
**************************
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值