Câu trả lời:
Từ psql
giao diện dòng lệnh,
Đầu tiên, chọn cơ sở dữ liệu của bạn
\c database_name
Sau đó, điều này hiển thị tất cả các bảng trong lược đồ hiện tại:
\dt
Tất nhiên là có lập trình (hoặc từ psql
giao diện):
SELECT * FROM pg_catalog.pg_tables;
Các bảng hệ thống sống trong pg_catalog
cơ sở dữ liệu.
\l
tương đương với show databases
MySQL. dt
≃ show tables
và l
≃show databases
\dt
rất hữu ích Cái đó pg_catalog.pg_tables
ít hơn nhiều, vì nó xuất hiện gộp các bảng nội bộ cùng với các bảng do người dùng tạo cho bất kỳ cơ sở dữ liệu nào bạn tình cờ được kết nối.
psql my_db_name
nên được chạy \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ệ"
SELECT * FROM pg_catalog.pg_tables WHERE schemaname != 'pg_catalog' AND schemaname != 'information_schema'
\c <DATABASE_NAME>
chọn cơ sở dữ liệu của bạn.
Đăng nhập như siêu người dùng:
sudo -u postgres psql
Bạn có thể liệt kê tất cả cá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ơ sở dữ liệu khác mà bạn có thể thay đổi người sử dụng / cơ sở dữ liệu bằng \c
lệnh như \c template1
, \c postgres postgres
và sử dụng \d
, \dt
hoặc \dS
để xem bảng / views / etc.
(Để hoàn thiện)
Bạn cũng có thể truy vấn lược đồ thông tin (tiêu chuẩn SQL) :
SELECT
table_schema || '.' || table_name
FROM
information_schema.tables
WHERE
table_type = 'BASE TABLE'
AND
table_schema NOT IN ('pg_catalog', 'information_schema');
Bạn có thể sử dụng thiết bị đầu cuối tương tác Psql của PostgreQuery để hiển thị các bảng trong PostgreSQL.
1. Bắt đầu Psql
Thông thường bạn có thể chạy lệnh sau để nhập vào psql:
psql DBNAME USERNAME
Ví dụ, psql template1 postgres
Một tình huống bạn có thể có là: giả sử bạn đăng nhập bằng root và bạn không nhớ tên cơ sở dữ liệu. Bạn chỉ có thể nhập đầu tiên vào Psql bằng cách chạy:
sudo -u postgres psql
Trong một số hệ thống, lệnh sudo không khả dụng, thay vào đó bạn có thể chạy một trong hai lệnh dưới đây:
psql -U postgres
psql --username=postgres
2. Hiển thị bảng
Bây giờ trong Psql bạn có thể chạy các lệnh như:
\?
liệt kê tất cả các lệnh\l
liệt kê cơ sở dữ liệu\conninfo
hiển thị thông tin về kết nối hiện tại\c [DBNAME]
kết nối với cơ sở dữ liệu mới, vd \c template1
\dt
bảng liệt kê các lược đồ công cộng\dt <schema-name>.*
liệt kê các bảng của lược đồ nhất định, ví dụ, \dt public.*
\dt *.*
bảng liệt kê tất cả các lược đồSELECT * FROM my_table;
(Lưu ý: một câu lệnh phải được chấm dứt bằng dấu chấm phẩy ;
)\q
thoát khỏi psqlChạy psql với cờ -E sẽ lặp lại truy vấn được sử dụng 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;
**************************
Đăng nhập như một siêu người dùng để bạn có thể kiểm tra tất cả các cơ sở dữ liệu và lược đồ của họ: -
sudo su - postgres
Sau đó, chúng ta có thể truy cập shell postgresql bằng cách sử dụng lệnh sau: -
psql
Bây giờ bạn có thể kiểm tra tất cả các danh sách cơ sở dữ liệu bằng cách sử dụng lệnh sau: -
\l
Nếu bạn muốn kiểm tra kích thước của cơ sở dữ liệu cũng sử dụng: -
\l+
Nhấn q
để quay lại.
Khi bạn đã tìm thấy cơ sở dữ liệu của mình, bạn có thể kết nối với cơ sở dữ liệu đó bằng lệnh sau: -
\c database_name
Sau khi kết nối, bạn có thể kiểm tra các bảng cơ sở dữ liệu hoặc lược đồ bằng cách: -
\d
Bây giờ để trở lại vỏ sử dụng: -
q
Bây giờ để xem thêm chi tiết về việc sử dụng bảng nhất định: -
\d table_name
Để quay lại postgresql_shell nhấn \q
.
Và để trở lại báo chí thiết bị đầu cuối exit
.
chỉ sử dụng để xem bảng
=> \dt
nếu muốn xem bảng lược đồ
=>\dt+
nếu bạn muốn xem các bảng lược đồ cụ thể
=>\dt schema_name.*
+
với S
. Cái sau (chữ cái) hiển thị các bảng lược đồ. Đơn +
giản chỉ cần hiển thị thêm thông tin.
Đầu tiên Kết nối với cơ sở dữ liệu bằng lệnh sau
\c database_name
Và bạn sẽ thấy thông báo này - You are now connected to database database_name
. Và họ chạy lệnh sau
SELECT * FROM table_name;
Trong cơ sở dữ liệu và tên_bảng chỉ cần cập nhật với cơ sở dữ liệu và tên bảng của bạn
Nếu bạn đang sử dụng pgAdmin4 trong PostgreSQL, bạn có thể sử dụng điều này để hiển thị các bảng trong cơ sở dữ liệu của bạn:
select * from information_schema.tables where table_schema='public';
Lưu ý rằng \dt
một mình sẽ liệt kê các bảng trong công chúng lược đồ của cơ sở dữ liệu bạn đang sử dụng. Tôi thích giữ các bảng của mình trong các lược đồ riêng biệt, vì vậy câu trả lời được chấp nhận không phù hợp với tôi.
Để liệt kê tất cả các bảng trong một lược đồ cụ thể , tôi cần phải:
1) Kết nối với cơ sở dữ liệu mong muốn:
psql mydb
2) Chỉ định tên lược đồ tôi muốn xem các bảng sau \dt
lệnh, như thế này:
\dt myschema.*
Điều này cho tôi thấy kết quả mà tôi quan tâm:
List of relations
Schema | Name | Type | Owner
----------+-----------------+-------+----------
myschema | users | table | postgres
myschema | activity | table | postgres
myschema | roles | table | postgres
select
*
from
pg_catalog.pg_tables
where
schemaname != 'information_schema'
and schemaname != 'pg_catalog';
\ dt (không * bắt buộc) - sẽ liệt kê tất cả các bảng cho cơ sở dữ liệu hiện có mà bạn đã kết nối. Cũng hữu ích để lưu ý:
\ d [tên_bảng] - sẽ hiển thị tất cả các cột cho một bảng đã cho bao gồm thông tin loại, tham chiếu và các ràng buộc chính.
Sử dụng psql : \ dt
Hoặc là:
SELECT c.relname AS Tables_in FROM pg_catalog.pg_class c
LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE pg_catalog.pg_table_is_visible(c.oid)
AND c.relkind = 'r'
AND relname NOT LIKE 'pg_%'
ORDER BY 1
Trước hết bạn phải kết nối với cơ sở dữ liệu của bạn như
cơ sở dữ liệu của tôi là Ubuntu
sử dụng lệnh này để kết nối
\c ubuntu
Thông báo này sẽ hiển thị
"Bây giờ bạn đã được kết nối với cơ sở dữ liệu" ubfox "với tư cách là người dùng" postgres "."
Hiện nay
Chạy lệnh này để hiển thị tất cả các bảng trong đó
\d+
Cách đơn giản nhất để liệt kê tất cả các bảng tại dòng lệnh là, theo sở thích của tôi:
psql -a -U <user> -p <port> -h <server> -c "\dt"
Đối với một cơ sở dữ liệu nhất định, chỉ cần thêm tên cơ sở dữ liệu:
psql -a -U <user> -p <port> -h <server> -c "\dt" <database_name>
Nó hoạt động trên cả Linux và Windows.
như một oneliner nhanh
# just list all the postgres tables sorted in the terminal
db='my_db_name'
clear;psql -d $db -t -c '\dt'|cut -c 11-|perl -ne 's/^([a-z_0-9]*)( )(.*)/$1/; print'
hoặc nếu bạn thích đa lớp đầu ra json rõ ràng hơn nhiều:
IFS='' read -r -d '' sql_code <<"EOF_CODE"
select array_to_json(array_agg(row_to_json(t))) from (
SELECT table_catalog,table_schema,table_name
FROM information_schema.tables
ORDER BY table_schema,table_name ) t
EOF_CODE
psql -d postgres -t -q -c "$sql_code"|jq
\ dt sẽ liệt kê các bảng và "\ pset pager off" hiển thị chúng trong cùng một cửa sổ, mà không chuyển sang một bảng riêng biệt. Yêu tính năng đó đến chết trong dbshell.
Để xem các bảng nước ngoài trong psql, hãy chạy \dE
Trước tiên, bạn có thể kết nối với cơ sở dữ liệu postgres của mình bằng postgre.app trên mac hoặc sử dụng postico. Chạy lệnh sau:
psql -h localhost -p port_number -d database_name -U user_name -W
sau đó bạn nhập mật khẩu của bạn, điều này sẽ cung cấp quyền truy cập vào cơ sở dữ liệu của bạn