เมื่อฉันทำ\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.*
, ฉันใช่มั้ย?