Câu hỏi Hiển thị các bảng trong PostgreSQL


Tương đương với show tables (từ MySQL) trong PostgreSQL?


1193
2018-04-20 19:07


gốc


Xem dba.stackexchange.com/a/1288/90651 - Peter Krauss


Các câu trả lời:


Từ psql giao diện dòng lệnh, điều này cho thấy tất cả các bảng trong lược đồ hiện tại:

\dt

Lập trình (hoặc từ psql giao diện quá, tất nhiên):

SELECT * FROM pg_catalog.pg_tables;

Các bảng hệ thống sống trong cơ sở dữ liệu pg_catalog.


1744
2018-04-20 19:12



@StephenCorwin Không, \l là tương đương với show databases trong MySQL. dt ≃ show tables và l ≃ show databases - user454322
\dt rất hữu ích. Cái đó pg_catalog.pg_tables một là ít hơn nhiều như vậy, vì nó xuất hiện để gộp các bảng nội bộ cùng với những người dùng tạo ra cho bất kỳ cơ sở dữ liệu bạn xảy ra được kết nối với. - aroth
psql my_db_name nên chạy theo thứ tự \dt làm việc. Khi tôi chạy psql mà không có tên cơ sở dữ liệu, tôi nhận được thông báo "Không tìm thấy quan hệ" - Maksim Dmitriev
Không có bảng hệ thống: SELECT * FROM pg_catalog.pg_tables WHERE schemaname != 'pg_catalog' AND schemaname != 'information_schema' - Matt White
Trước tiên bạn cần \c <DATABASE_NAME> để chọn cơ sở dữ liệu của bạn. - danio


Đăng nhập với tư cách superuser:

sudo -u postgres psql

Bạn có thể liệt kê tất cả cơ sở dữ liệu và người dùng theo \l lệnh, (liệt kê các lệnh khác theo \?).

Bây giờ nếu bạn muốn xem các cơ sở dữ liệu khác, bạn có thể thay đổi người dùng / cơ sở dữ liệu bằng cách \c lệnh giống như \c template1, \c postgres postgres Và sử dụng \d, \dt hoặc là \dS để xem bảng / lượt xem / v.v.


131
2018-02-16 10:13



Đây là một câu trả lời tốt hơn, vì người ta thường có thể cài đặt nhiều cơ sở dữ liệu. - Jerome


(Để hoàn thành)

Bạn cũng có thể truy vấn (tiêu chuẩn SQL) lược đồ thông tin:

SELECT
    table_schema || '.' || table_name
FROM
    information_schema.tables
WHERE
    table_type = 'BASE TABLE'
AND
    table_schema NOT IN ('pg_catalog', 'information_schema');

93
2018-04-21 09:55



1 mặc dù cho đầy đủ, các bảng hiển thị mysql chỉ hiển thị lược đồ hiện tại, tốt để nghĩ về nó theo cách này, mysql chỉ có một cơ sở dữ liệu nhưng nhiều lược đồ, trong đó postgresql có thể có cơ sở dữ liệu mutliple (catalog) và lược đồ. Vì vậy, equiv nên được table_schema = 'DB_NAME'; - Rahly


  1. Đăng nhập đầu tiên với tư cách là người dùng postgres:

    sudo su - postgres

  2. kết nối với db được yêu cầu: psql -d databaseName

  3. \dt sẽ trả về danh sách tất cả các bảng trong cơ sở dữ liệu bạn đã kết nối.


38
2017-11-22 13:33





Chạy psql với cờ -E sẽ lặp lại truy vấn được sử dụng trong nội bộ để triển khai \ dt và tương tự:

sudo -u postgres psql -E

postgres=# \dt       
********* QUERY **********
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' 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;        
**************************

30
2017-07-02 00:48



BTW, TOAST được sử dụng để lưu trữ các giá trị lớn: postgresql.org/docs/8.3/static/storage-toast.html - Dorian


Nếu bạn chỉ muốn xem danh sách các bảng bạn đã tạo, bạn chỉ có thể nói:

\dt

Nhưng chúng tôi cũng có PATTERN sẽ giúp bạn tùy chỉnh bảng nào sẽ hiển thị. Để hiển thị tất cả bao gồm pg_catalog Giản đồ, bạn có thể thêm *.

\dt *

Nếu bạn làm: \?

\ dt [S +] [PATTERN] bảng danh sách


22
2017-11-02 06:45





Đầu tiên kết nối với cơ sở dữ liệu bằng cách sử dụng lệnh sau

\c database_name

Và bạn sẽ thấy thông báo này Bây giờ bạn đã kết nối với cơ sở dữ liệu database_name và chúng chạy lệnh sau

SELECT * FROM table_name;

Trong database_name và table_name chỉ cập nhật với cơ sở dữ liệu và tên bảng của bạn


16
2018-06-27 15:45



Tôi không chắc điều này đang trả lời câu hỏi. Tôi nghĩ rằng OP là (đã) cố gắng để biết tất cả các bảng trong cơ sở dữ liệu của mình, không nhận được tất cả các hàng từ một bảng cụ thể trong cơ sở dữ liệu của mình ... phải không? - snuggles