Dapatkan kueri SQL yang setara untuk semua meta-perintah Postgres


11

Saya harap judulnya adalah deskriptif diri. Saya ingin dapat menerjemahkan entah bagaimana meta-perintah Postgres ke dalam kueri SQL yang mendasarinya, setidaknya untuk mempelajari lebih lanjut tentang Postgres dan cara menyimpan meta-info dalam tabel-tabelnya.

Adakah ide jika ini mungkin?

Misalnya:

Ketika terhubung ke CONTOH basis data, \dtdan SELECT table_schema,table_name FROM information_schema.tables ORDER BY table_schema,table_name;mengembalikan hasil yang sama.

Saya ingin mencari, jika mungkin, cara untuk mendapatkan nilai SELECT table_schema,table_name FROM information_schema.tables ORDER BY table_schema,table_name;saat memasukkan \dtke fungsi / makro / apa pun.

Jawaban:


17

Mudah dan sangat berguna: Anda dapat meluncurkan psql dengan saklar yang tepat (-E) untuk mendapatkan informasi.

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;

Lihat http://www.postgresql.org/docs/current/static/app-psql.html untuk informasi lebih lanjut. Setelah di psql, Anda juga bisa mengatur variabel ECHO_HIDDEN .


1
sangat menjanjikan! tetapi ketika saya mencoba untuk mendapatkan definisi tabel dengan 'psql -E mytable' ia melaporkan beberapa pertanyaan, tidak ada yang mengembalikan apa pun yang berguna ketika dikeluarkan secara individual, jadi sesuatu yang tidak dilaporkan sedang terjadi.
philwalk
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.