Obtenha uma consulta SQL equivalente para qualquer meta-comando do Postgres


11

Espero que o título seja auto-descritivo. Eu quero poder, de alguma forma, traduzir qualquer meta-comando do Postgres em sua consulta SQL correspondente / subjacente, pelo menos para aprender mais sobre o Postgres e a maneira como ele armazena as meta-informações em suas tabelas.

Alguma idéia, se isso for possível?

Por exemplo:

Quando conectado ao banco de dados EXAMPLE, \dte SELECT table_schema,table_name FROM information_schema.tables ORDER BY table_schema,table_name;retorne o mesmo resultado.

Quero encontrar, se possível, uma maneira de obter o valor SELECT table_schema,table_name FROM information_schema.tables ORDER BY table_schema,table_name;ao inserir \dta função / macro / o que for.

Respostas:


17

Fácil e muito útil: você pode iniciar o psql com a opção adequada (-E) para obter as informações.

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;

Consulte http://www.postgresql.org/docs/current/static/app-psql.html para obter mais informações. Uma vez no psql, você também pode definir a variável ECHO_HIDDEN .


11
muito promissor! mas quando tento obter uma definição de tabela com 'psql -E mytable', ele reporta várias consultas, nenhuma das quais retorna algo útil quando emitida individualmente; portanto, algo não relatado está acontecendo.
31318 philwalk
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.