Ottieni una query SQL equivalente per qualsiasi meta-comando Postgres


11

Spero che il titolo sia auto-descrittivo. Voglio essere in qualche modo in grado di tradurre qualsiasi meta comando di Postgres nella sua query SQL corrispondente / sottostante, almeno per saperne di più su Postgres e sul modo in cui memorizza le meta-informazioni nelle sue tabelle.

Qualche idea se questo è possibile?

Per esempio:

Se connesso al database EXAMPLE, \dte SELECT table_schema,table_name FROM information_schema.tables ORDER BY table_schema,table_name;restituisce lo stesso risultato.

Voglio trovare, se possibile, un modo per ottenere il valore SELECT table_schema,table_name FROM information_schema.tables ORDER BY table_schema,table_name;quando si introduce \dtla funzione / macro / qualunque cosa.

Risposte:


17

Semplice e molto utile: è possibile avviare psql con l'interruttore appropriato (-E) per ottenere le informazioni.

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;

Dai un'occhiata a http://www.postgresql.org/docs/current/static/app-psql.html per maggiori informazioni. Una volta in psql, puoi anche impostare la variabile ECHO_HIDDEN .


1
molto promettente! ma quando provo a ottenere una definizione di tabella con 'psql -E mytable' riporta diverse query, nessuna delle quali restituisce qualcosa di utile quando viene emessa individualmente, quindi sta succedendo qualcosa di non segnalato.
Philwalk,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.