เมื่อฉันทำ\dtใน psql ฉันจะได้รับรายชื่อของตารางในสคีมาปัจจุบันเท่านั้น ( publicโดยค่าเริ่มต้น)
ฉันจะรับรายการของตารางทั้งหมดในแบบแผนทั้งหมดหรือแบบแผนเฉพาะได้อย่างไร
เมื่อฉันทำ\dtใน psql ฉันจะได้รับรายชื่อของตารางในสคีมาปัจจุบันเท่านั้น ( publicโดยค่าเริ่มต้น)
ฉันจะรับรายการของตารางทั้งหมดในแบบแผนทั้งหมดหรือแบบแผนเฉพาะได้อย่างไร
คำตอบ:
ใน schemas ทั้งหมด:
=> \dt *.*
ในสคีมาเฉพาะ:
=> \dt public.*
เป็นไปได้ที่จะใช้นิพจน์ทั่วไปที่มีข้อ จำกัด บางอย่าง
\dt (public|s).(s|t)
List of relations
Schema | Name | Type | Owner
--------+------+-------+-------
public | s | table | cpn
public | t | table | cpn
s | t | table | cpn
ผู้ใช้ขั้นสูงสามารถใช้การแสดงผลปกติเช่นคลาสตัวอักษรเช่น [0-9] เพื่อจับคู่ตัวเลขใด ๆ ทุกตัวอักษรพิเศษแสดงออกปกติทำงานตามที่ระบุในมาตรา 9.7.3 ยกเว้น
.ที่จะนำมาเป็นตัวคั่นดังกล่าวข้างต้น*ซึ่งจะแปลให้สัญกรณ์แสดงออกปกติ.*,?ซึ่งจะแปลให้.และ$ที่จะถูกจับคู่ตัวอักษร คุณสามารถเลียนแบบตัวละครในรูปแบบเหล่านี้ที่จำเป็นโดยการเขียน?สำหรับ.,(R+|)สำหรับR*หรือสำหรับ(R|)ไม่จำเป็นต้องใช้เป็นอักขระนิพจน์ทั่วไปเนื่องจากรูปแบบต้องตรงกับชื่อทั้งหมดไม่เหมือนกับการตีความปกติของนิพจน์ทั่วไป (ในคำอื่น ๆR?$$ถูกผนวกเข้ากับรูปแบบของคุณโดยอัตโนมัติ) เขียน*ที่จุดเริ่มต้นและ / หรือสิ้นสุดหากคุณไม่ต้องการยึดรูปแบบ โปรดทราบว่าภายในเครื่องหมายอัญประกาศคู่อักขระพิเศษของนิพจน์ทั่วไปทั้งหมดจะสูญเสียความหมายพิเศษและถูกจับคู่อย่างแท้จริง นอกจากนี้อักขระพิเศษนิพจน์ทั่วไปจะจับคู่ตามตัวอักษรในรูปแบบชื่อตัวดำเนินการ (เช่นอาร์กิวเมนต์ของ\do)
\dt public.user_info, public.user_scopeไหม
\dt public.a; \dt public.b;ในบรรทัดเดียว
search_pathและที่"$user", public.*ค่าเริ่มต้น ดังนั้นเป็นไปได้ที่ตารางรายการทั้งหมดในคีset search_path=s; \dt s
คุณสามารถเลือกตารางจาก information_schema
SELECT * FROM information_schema.tables
WHERE table_schema = 'public'
อีกวิธีหนึ่งที่information_schemaเป็นไปได้ที่จะใช้pg_tables:
select * from pg_tables where schemaname='public';
SELECT tablename FROM pg_tables WHERE schemaname = 'public';
information_schemaไม่ได้แสดงรายการจากpublicสคีมา แต่pg_tablesวิธีการทำงานเป็นอย่างดี ขอบคุณมาก!
สำหรับผู้ที่พบสิ่งนี้ในอนาคต:
หากคุณต้องการดูรายการความสัมพันธ์สำหรับ schema หลายรายการ:
$psql mydatabase
mydatabase=# SET search_path TO public, usa; #schema examples
SET
mydatabase=# \dt
List of relations
Schema | Name | Type | Owner
--------+-----------------+-------+----------
public | counties | table | postgres
public | spatial_ref_sys | table | postgres
public | states | table | postgres
public | us_cities | table | postgres
usa | census2010 | table | postgres
\dtเป็น equivolent ไป\dt public.*, ฉันใช่มั้ย?