อะไรคือสิ่งที่เทียบเท่ากับshow tables
(จาก MySQL) ใน PostgreSQL
อะไรคือสิ่งที่เทียบเท่ากับshow tables
(จาก MySQL) ใน PostgreSQL
คำตอบ:
จากpsql
อินเตอร์เฟสบรรทัดคำสั่ง
ก่อนอื่นให้เลือกฐานข้อมูลของคุณ
\c database_name
จากนั้นจะแสดงตารางทั้งหมดในสคีมาปัจจุบัน:
\dt
โดยทางโปรแกรม (หรือจากpsql
อินเทอร์เฟซด้วย):
SELECT * FROM pg_catalog.pg_tables;
ตารางระบบถ่ายทอดสดในpg_catalog
ฐานข้อมูล
\l
เทียบเท่ากับshow databases
ใน MySQL dt
≃ show tables
และ l
≃show databases
\dt
มีประโยชน์มาก ที่pg_catalog.pg_tables
หนึ่งที่น้อยมากดังนั้นตามที่ปรากฏก้อนตารางภายในร่วมกันกับคนที่ผู้ใช้สร้างขึ้นสำหรับฐานข้อมูลของสิ่งที่คุณจะได้รับการเชื่อมต่อกับ
psql my_db_name
ควรทำงานเพื่อ\dt
ให้ทำงานได้ เมื่อฉันวิ่งpsql
โดยไม่มีชื่อฐานข้อมูลฉันได้รับข้อความ "ไม่พบความสัมพันธ์"
SELECT * FROM pg_catalog.pg_tables WHERE schemaname != 'pg_catalog' AND schemaname != 'information_schema'
\c <DATABASE_NAME>
เลือกฐานข้อมูลของคุณ
เข้าสู่ระบบในฐานะ superuser:
sudo -u postgres psql
คุณสามารถแสดงรายการฐานข้อมูลและผู้ใช้ทั้งหมดตาม\l
คำสั่ง (แสดงรายการคำสั่งอื่น ๆ ตาม\?
)
ตอนนี้ถ้าคุณต้องการที่จะเห็นฐานข้อมูลอื่น ๆ ที่คุณสามารถเปลี่ยนผู้ใช้ / ฐานข้อมูลโดย\c
คำสั่งที่ชอบ\c template1
, \c postgres postgres
และการใช้งาน\d
, \dt
หรือ\dS
เพื่อดูตาราง / มุมมอง / ฯลฯ
(เพื่อความสมบูรณ์)
คุณสามารถสืบค้นสคีมาข้อมูล (มาตรฐาน SQL) :
SELECT
table_schema || '.' || table_name
FROM
information_schema.tables
WHERE
table_type = 'BASE TABLE'
AND
table_schema NOT IN ('pg_catalog', 'information_schema');
คุณสามารถใช้ Psql แบบเทอร์มินัลของ PostgreSQL เพื่อแสดงตารางใน PostgreSQL
1. เริ่ม Psql
โดยปกติคุณสามารถเรียกใช้คำสั่งต่อไปนี้เพื่อเข้าสู่ psql:
psql DBNAME USERNAME
ตัวอย่างเช่น, psql template1 postgres
สถานการณ์หนึ่งที่คุณอาจมีคือสมมติว่าคุณเข้าสู่ระบบในฐานะ root และคุณจำชื่อฐานข้อมูลไม่ได้ คุณสามารถป้อน Psql เป็นลำดับแรกโดยเรียกใช้:
sudo -u postgres psql
ในบางระบบคำสั่ง sudo ไม่พร้อมใช้งานคุณสามารถเรียกใช้คำสั่งด้านล่างแทน:
psql -U postgres
psql --username=postgres
2. แสดงตาราง
ตอนนี้ใน Psql คุณสามารถเรียกใช้คำสั่งเช่น:
\?
แสดงรายการคำสั่งทั้งหมด\l
ฐานข้อมูลรายการ\conninfo
แสดงข้อมูลเกี่ยวกับการเชื่อมต่อปัจจุบัน\c [DBNAME]
เชื่อมต่อกับฐานข้อมูลใหม่เช่น \c template1
\dt
รายการตารางของสคีมาสาธารณะ\dt <schema-name>.*
รายการตารางของสคีมาบางอย่างเช่น \dt public.*
\dt *.*
รายการตารางของสกีมาทั้งหมดSELECT * FROM my_table;
(หมายเหตุ: คำสั่งจะต้องสิ้นสุดด้วยเครื่องหมายอัฒภาค;
)\q
ออกจาก psqlเข้าสู่ระบบครั้งแรกในฐานะผู้ใช้ postgres:
sudo su - postgres
เชื่อมต่อกับฐานข้อมูลที่ต้องการ: psql -d databaseName
\dt
จะส่งคืนรายการตารางทั้งหมดในฐานข้อมูลที่คุณเชื่อมต่อ
การรัน psql ด้วยแฟล็ก -E จะสะท้อนเคียวรีที่ใช้ภายในเพื่อนำไปใช้ \ dt และสิ่งที่คล้ายกัน:
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;
**************************
เข้าสู่ระบบในฐานะ superuser เพื่อให้คุณสามารถตรวจสอบฐานข้อมูลและสคีมาทั้งหมด: -
sudo su - postgres
จากนั้นเราสามารถไปที่เชลล์ postgresql โดยใช้คำสั่งต่อไปนี้: -
psql
ตอนนี้คุณสามารถตรวจสอบรายการฐานข้อมูลทั้งหมดโดยใช้คำสั่งต่อไปนี้: -
\l
หากคุณต้องการตรวจสอบขนาดของฐานข้อมูลและใช้: -
\l+
กด q
เพื่อย้อนกลับ
เมื่อคุณพบฐานข้อมูลแล้วคุณสามารถเชื่อมต่อกับฐานข้อมูลนั้นโดยใช้คำสั่งต่อไปนี้: -
\c database_name
เมื่อเชื่อมต่อแล้วคุณสามารถตรวจสอบตารางฐานข้อมูลหรือสคีมาได้โดย: -
\d
ตอนนี้กลับไปใช้เชลล์: -
q
ตอนนี้เพื่อดูรายละเอียดเพิ่มเติมของการใช้ตาราง: -
\d table_name
หากต้องการกลับไปที่ postgresql_shell กด \q
ที่จะกลับไปกด
exit
และส่งกลับมาที่กดขั้ว
หากคุณต้องการเห็นรายการตารางที่คุณสร้างขึ้นคุณอาจพูดได้ว่า:
\dt
แต่เรายังมีPATTERN
ที่จะช่วยให้คุณปรับแต่งตารางที่จะแสดง หากต้องการแสดงทั้งหมดรวมทั้งpg_catalog
Schema *
คุณสามารถเพิ่ม
\dt *
ถ้าคุณทำ: \?
\ dt [S +] [รูปแบบ] ตารางรายการ
ใช้ดูตารางเท่านั้น
=> \dt
ถ้าต้องการดูตารางสคีมา
=>\dt+
หากคุณต้องการดูตารางสคีมาที่เฉพาะเจาะจง
=>\dt schema_name.*
+
S
หลัง (ตัวอักษร) แสดงตาราง schema +
เพียงแสดงข้อมูลเพิ่มเติม
ก่อนเชื่อมต่อกับฐานข้อมูลโดยใช้คำสั่งดังต่อไปนี้
\c database_name
และคุณจะเห็นข้อความนี้ - You are now connected to database database_name
- และพวกเขาเรียกใช้คำสั่งต่อไปนี้
SELECT * FROM table_name;
ใน database_name และ table_name เพียงอัปเดตด้วยฐานข้อมูลและชื่อตารางของคุณ
หากคุณใช้ pgAdmin4 ใน PostgreSQL คุณสามารถใช้สิ่งนี้เพื่อแสดงตารางในฐานข้อมูลของคุณ:
select * from information_schema.tables where table_schema='public';
โปรดทราบว่า\dt
จะทำรายการตารางในสคีมาสาธารณะของฐานข้อมูลที่คุณใช้ ฉันชอบที่จะเก็บตารางไว้ในตารางที่แยกต่างหากดังนั้นคำตอบที่ได้รับการยอมรับจึงไม่ได้ผล
ในการแสดงตารางทั้งหมดภายในสคีมาที่เฉพาะเจาะจงฉันจำเป็นต้อง:
1) เชื่อมต่อกับฐานข้อมูลที่ต้องการ:
psql mydb
2) ระบุชื่อ schema ที่ฉันต้องการดูตารางหลัง\dt
คำสั่งเช่นนี้
\dt myschema.*
นี่แสดงผลลัพธ์ที่ฉันสนใจ:
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 (ไม่จำเป็นต้องมี *) - จะแสดงตารางทั้งหมดสำหรับฐานข้อมูลที่มีอยู่ซึ่งคุณเชื่อมต่ออยู่แล้ว ยังมีประโยชน์ที่จะต้องทราบ:
\ d [table_name] - จะแสดงคอลัมน์ทั้งหมดสำหรับตารางที่ระบุรวมถึงข้อมูลประเภทการอ้างอิงและข้อ จำกัด ของคีย์
คุณสามารถแสดงรายการตารางในฐานข้อมูลปัจจุบันด้วย \dt
คุณสามารถแสดงรายการตารางในฐานข้อมูลปัจจุบันด้วย
FWIW, \d tablename
จะแสดงรายละเอียดเกี่ยวกับตารางที่กำหนดบางอย่างเช่นshow columns from tablename
ใน MySQL แต่มีข้อมูลเพิ่มเติมเล็กน้อย
ใช้psql : \ dt
หรือ:
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
ก่อนอื่นคุณต้องเชื่อมต่อกับฐานข้อมูลของคุณเช่น
ฐานข้อมูลของฉันคือ Ubuntu
ใช้คำสั่งนี้เพื่อเชื่อมต่อ
\c ubuntu
ข้อความนี้จะแสดง
"คุณกำลังเชื่อมต่อกับฐานข้อมูล" อูบุนตู "ในฐานะผู้ใช้" postgres "
ตอนนี้
เรียกใช้คำสั่งนี้เพื่อแสดงตารางทั้งหมดในนั้น
\d+
วิธีที่ตรงไปตรงมาที่สุดในรายการตารางทั้งหมดที่บรรทัดคำสั่งคือเพื่อความชอบของฉัน:
psql -a -U <user> -p <port> -h <server> -c "\dt"
สำหรับฐานข้อมูลที่กำหนดให้เพิ่มชื่อฐานข้อมูล:
psql -a -U <user> -p <port> -h <server> -c "\dt" <database_name>
มันทำงานได้ทั้งบน Linux และ Windows
ในฐานะผู้ออกตั๋วด่วน
# 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'
หรือถ้าคุณชอบ json output multi-liner ที่ชัดเจนกว่า:
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 จะแสดงรายการตารางและ "\ pset pager off" จะแสดงตารางเหล่านั้นในหน้าต่างเดียวกันโดยไม่ต้องสลับไปใช้ตารางแยกต่างหาก รักคุณสมบัติที่จะตายใน dbshell
หากต้องการดูตารางต่างประเทศใน psql ให้เรียกใช้ \dE
ก่อนอื่นให้ป้อนฐานข้อมูลที่คุณต้องการเชื่อมต่อ
\c database_name
จากนั้นจะแสดงตารางทั้งหมดในสคีมาปัจจุบัน:
\dt
ก่อนอื่นคุณสามารถเชื่อมต่อกับฐานข้อมูล postgres ของคุณโดยใช้ postgre.app บน mac หรือใช้ postico รันคำสั่งต่อไปนี้:
psql -h localhost -p port_number -d database_name -U user_name -W
จากนั้นคุณป้อนรหัสผ่านของคุณซึ่งจะช่วยให้เข้าถึงฐานข้อมูลของคุณ