PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Psql liệt kê tất cả các bảng

Nếu bạn muốn liệt kê tất cả bảng, bạn phải sử dụng:

\dt *.*

để cho biết rằng bạn muốn tất cả các bảng trong tất cả các lược đồ . Điều này sẽ bao gồm các bảng trong pg_catalog , các bảng hệ thống và những bảng đó trong information_schema . Không có cách tích hợp nào để nói "tất cả các bảng trong tất cả các lược đồ do người dùng xác định"; tuy nhiên, bạn có thể đặt search_path vào danh sách tất cả các lược đồ quan tâm trước khi chạy \dt .

Bạn có thể muốn thực hiện việc này theo chương trình, trong trường hợp này là psql các lệnh gạch chéo ngược sẽ không thực hiện công việc. Đây là nơi chứa INFORMATION_SCHEMA đến để giải cứu. Để liệt kê các bảng:

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

BTW, nếu bạn muốn xem psql gì đang thực hiện phản hồi với một lệnh gạch chéo ngược, hãy chạy psql với -E lá cờ. ví dụ:

$ 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;
**************************

để bạn có thể thấy rằng psql đang tìm kiếm pg_catalog.pg_database khi nó nhận được một danh sách các cơ sở dữ liệu. Tương tự, đối với các bảng trong một cơ sở dữ liệu nhất định:

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;

Tốt hơn là sử dụng INFORMATION_SCHEMA tiêu chuẩn SQL, di động thay vì danh mục hệ thống Pg nếu có thể, nhưng đôi khi bạn cần thông tin cụ thể về Pg. Trong những trường hợp đó, bạn có thể truy vấn trực tiếp danh mục hệ thống và psql -E có thể là một hướng dẫn hữu ích về cách làm như vậy.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách tốt nhất để cài đặt hstore trên nhiều lược đồ trong cơ sở dữ liệu Postgres?

  2. Gói PGLogical 1.1 cho PostgreSQL 9.6beta1

  3. Làm cách nào để thêm nguồn dữ liệu PostgreSQL vào WildFly 9.0?

  4. Kích thước của bảng phân vùng trong PostgreSQL 9.0

  5. Cách lấy danh sách tham số hàm (để tôi có thể bỏ một hàm)