2010-02-16 39 views

Trả lời

153

Bạn có thể chỉ cần chạy select * from information_schema.tables để nhận danh sách của mọi bảng đang được Postgres quản lý cho một cơ sở dữ liệu cụ thể.

Bạn cũng có thể thêm where table_schema = 'information_schema' để chỉ xem các bảng trong lược đồ thông tin.

+3

Cảm ơn, tôi chỉ cố gắng:/dt (dấu sao). (dấu hoa thị) có khác biệt gì không? – littleK

+0

Tôi không biết gì về/dt (dấu hoa thị). Tôi chỉ chạy truy vấn chọn trong postgres và nó liệt kê thông tin về tất cả các bảng trong đó. Hãy thử chạy câu lệnh chọn (trên db trống của bạn) và xem nó trả về cái gì. – RodeoClown

+0

Thử lệnh trên liệt kê các bảng sau đây trong information_schema: sql_features, sql_implementation_info, sql_languages, sql_packages, sql_parts, sql_sizing, sql_sizing_profiles ..... Vậy sự khác nhau giữa các bảng đó và các bảng trong information_schema.tables là gì? – littleK

28
\dt information_schema. 

từ trong psql, phải không sao.

62

Đối với niêm yết bảng của bạn sử dụng:

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

Nó sẽ chỉ danh sách bảng mà bạn tạo.

+0

Làm thế nào về các bảng mà bạn không tạo nhưng bạn có quyền truy cập? – huy

+3

Điều này sẽ chỉ hiển thị các bảng trong lược đồ công khai. Bạn có thể tạo các bảng trong các lược đồ khác. –

6

Bạn có thể sử dụng cũng

select * from pg_tables where schemaname = 'information_schema' 

Trong generall pg * bảng cho phép bạn xem mọi thứ trong db, không hạn chế để cho phép bạn (nếu bạn có quyền truy cập vào các bảng dĩ nhiên).

3

Đối với schema tin 'xxx' trong postgresql:

SELECT table_name FROM information_schema.tables 
WHERE table_schema = 'xxx' AND table_type = 'BASE TABLE' 

Without table_type = 'BASE TABLE', bạn sẽ liệt kê bảng và xem

7

Các "\ z" COMMAND cũng là một cách tốt để liệt kê bảng khi bên trong phiên psql tương tác.

ví dụ:

# psql -d mcdb -U admin -p 5555 
mcdb=# /z 
          Access privileges for database "mcdb" 
Schema |    Name    | Type |   Access privileges 
--------+--------------------------------+----------+--------------------------------------- 
public | activities      | table | 
public | activities_id_seq    | sequence | 
public | activities_users_mapping  | table | 
[..] 
public | v_schedules_2     | view  | {admin=arwdxt/admin,viewuser=r/admin} 
public | v_systems      | view  | 
public | vapp_backups     | table | 
public | vm_client      | table | 
public | vm_datastore     | table | 
public | vmentity_hle_map    | table | 
(148 rows) 
0

Nếu bạn muốn có một truy vấn một lót nhanh chóng và dơ bẩn:

select * from information_schema.tables

Bạn có thể chạy nó trực tiếp trong công cụ truy vấn mà không cần phải mở psql.

(bài viết khác đề nghị truy vấn information_schema cụ thể hơn thoải mái nhưng như một newby, tôi đang tìm kiếm truy vấn một lót này giúp tôi có được để hiểu thấu với bảng)

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