2013-02-06 30 views
106

Có bất kỳ truy vấn nào có sẵn để liệt kê tất cả các bảng trong DB Postgres của tôi không.truy vấn postgres để liệt kê tất cả các tên bảng

tôi đã cố gắng ra một truy vấn như:

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

Nhưng truy vấn này trả về quan điểm cũng có.

Làm cách nào tôi chỉ có thể nhận được tên bảng chứ không chỉ xem?

Trả lời

183

Bout truy vấn này (dựa trên mô tả từ manual) là gì?

SELECT table_name 
    FROM information_schema.tables 
WHERE table_schema='public' 
    AND table_type='BASE TABLE'; 
+2

đây là câu trả lời hay nhất tại đây. – Tommy

25

Mở terminal postgres với databse bạn muốn:

psql dbname (run this line in a terminal) 

sau đó, chạy lệnh này trong postgres môi trường

\d 

này sẽ mô tả tất cả các bảng theo tên. Về cơ bản một danh sách các bảng theo tên tăng dần.

Sau đó, bạn có thể thử này để mô tả một bảng bằng cách lĩnh vực:

\d tablename. 

Hope this helps.

+0

@ wingedpanther như thế nào? có một tùy chọn '\ d' để liệt kê * chỉ * tất cả các bảng, không có chỉ mục, không có seq, ...? –

+3

Có phải '' '\ dt''' không có ở đây không? – thoroc

4
select 
relname as table 
from 
pg_stat_user_tables 
where schemaname = 'public' 

select 
    tablename as table 
from 
    pg_tables 
where schemaname = 'public' 
+1

'pg_stat_user_tables' có thể không được điền nếu' track_activities' bị tắt. Sử dụng API "chính thức" như 'pg_tables' hoặc' information_schema.table' là lựa chọn tốt hơn ** **. –

+0

@a_horse_with_no_name xem nội dung cập nhật :) –

25

Nếu bạn muốn li st của cơ sở dữ liệu

SELECT datname FROM pg_database WHERE datistemplate = false; 

Nếu bạn muốn danh sách các bảng từ cài đặt pg hiện tại của tất cả các cơ sở dữ liệu

SELECT table_schema,table_name FROM information_schema.tables 
ORDER BY table_schema,table_name; 
+0

Ít nhất trong Postgres 9.5, điều đó không đúng. Tôi có 3 cơ sở dữ liệu trong một cụm, và đây chỉ là các bảng trả về từ cơ sở dữ liệu hiện tại. – sudo

+0

Tài liệu chỉ cho biết tài liệu hiện tại: https://www.postgresql.org/docs/9.5/static/infoschema-tables.html "table_catalog \t sql_identifier \t Tên cơ sở dữ liệu chứa bảng (luôn là cơ sở dữ liệu hiện tại)" – sudo

Các vấn đề liên quan