PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Psql daftar semua tabel

Jika Anda ingin membuat daftar semua tabel, Anda harus menggunakan:

\dt *.*

untuk menunjukkan bahwa Anda ingin semua tabel di semua skema . Ini akan menyertakan tabel di pg_catalog , tabel sistem, dan tabel di information_schema . Tidak ada cara bawaan untuk mengatakan "semua tabel di semua skema yang ditentukan pengguna"; Anda dapat, bagaimanapun, mengatur search_path Anda ke daftar semua skema yang diinginkan sebelum menjalankan \dt .

Anda mungkin ingin melakukan ini secara terprogram, dalam hal ini psql backslash-commands tidak akan berhasil. Di sinilah INFORMATION_SCHEMA datang untuk menyelamatkan. Untuk membuat daftar tabel:

SELECT table_name FROM information_schema.tables WHERE table_schema = 'public';

BTW, jika Anda ingin melihat apa psql lakukan sebagai tanggapan terhadap perintah garis miring terbalik, jalankan psql dengan -E bendera. misalnya:

$ psql -E regress    
regress=# \list
********* 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;
**************************

sehingga Anda dapat melihat psql sedang mencari pg_catalog.pg_database ketika mendapat daftar database. Demikian pula, untuk tabel dalam database yang diberikan:

SELECT n.nspname as "Schema",
  c.relname as "Name",
  CASE c.relkind WHEN 'r' THEN 'table' WHEN 'v' THEN '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','')
      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;

Lebih baik menggunakan INFORMATION_SCHEMA standar SQL dan portabel alih-alih katalog sistem Pg jika memungkinkan, tetapi terkadang Anda memerlukan informasi khusus Pg. Dalam kasus tersebut tidak masalah untuk menanyakan katalog sistem secara langsung, dan psql -E dapat menjadi panduan yang berguna tentang cara melakukannya.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pernyataan yang Disiapkan tentang Postgresql di Rails

  2. MASUKKAN KE ... DARI PILIH ... MENGEMBALIKAN pemetaan id

  3. Tidak dapat terhubung ke postgres menggunakan jdbc di pyspark Shell

  4. Perilaku aneh di Postgresql

  5. PostgreSQL 8.4 memberikan hak istimewa DML di semua tabel ke sebuah peran