获取任何 Postgres 元命令的等效 SQL 查询

Bog*_*lea 13 postgresql

我希望标题是自我描述的。我希望能够以某种方式将任何 Postgres 元命令转换为其相应的/基础 SQL 查询,至少可以了解有关 Postgres 及其在表中存储元信息的方式的更多信息。

如果可能的话,有什么想法吗?

例如:

当连接到数据库的例子, \dtSELECT table_schema,table_name FROM information_schema.tables ORDER BY table_schema,table_name;返回相同的结果。

如果可能的话,我想找到一种SELECT table_schema,table_name FROM information_schema.tables ORDER BY table_schema,table_name;在输入\dt到函数/宏/任何东西时获取值的方法。

Koo*_*ter 21

简单且非常有用:您可以使用适当的开关 (-E) 启动 psql 以获取信息。

me@mystation:~/ > psql -E 
psql (9.3.11)
Type "help" for help.
me@mystation # \d
********* QUERY **********
SELECT n.nspname as "Schema",
  c.relname as "Name",
  CASE c.relkind WHEN 'r' THEN 'table' WHEN 'v' THEN 'view' WHEN 'm' THEN 'materialized view' WHEN 'i' THEN 'index' WHEN 'S' THEN 'sequence' WHEN 's' THEN 'special' WHEN 'f' THEN 'foreign table' END as "Type",
  pg_catalog.pg_get_userbyid(c.relowner) as "Owner"
FROM pg_catalog.pg_class c
     LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE c.relkind IN ('r','v','m','S','f','')
      AND n.nspname <> 'pg_catalog'
      AND n.nspname <> 'information_schema'
      AND n.nspname !~ '^pg_toast'
  AND pg_catalog.pg_table_is_visible(c.oid)
ORDER BY 1,2;
Run Code Online (Sandbox Code Playgroud)

查看http://www.postgresql.org/docs/current/static/app-psql.html了解更多信息。在 psql 中,您还可以设置ECHO_HIDDEN变量。

  • 非常有前途!但是当我尝试使用“psql -E mytable”获取表定义时,它会报告几个查询,但单独发出时没有一个查询返回任何有用的信息,因此正在发生未报告的情况。 (2认同)