เมื่อใช้ PostgreSQL v9.1 ฉันจะแสดงรายการสกีมาทั้งหมดที่ใช้ SQL ได้อย่างไร
ฉันคาดหวังบางอย่างตามสายของ:
SELECT something FROM pg_blah;
เมื่อใช้ PostgreSQL v9.1 ฉันจะแสดงรายการสกีมาทั้งหมดที่ใช้ SQL ได้อย่างไร
ฉันคาดหวังบางอย่างตามสายของ:
SELECT something FROM pg_blah;
คำตอบ:
เมื่อใช้บรรทัดคำสั่งคุณอาจแสดงรายการสคีทั้งหมดที่มีคำสั่งpsql
\dn
\dn
แสดงรายการซึ่งตรงข้ามกับตารางที่\dt
แสดงรายการ
\dt
แสดงตารางสำหรับสคีมาสาธารณะ ในการแสดงตารางของ schemas ทุกการใช้งานและสำหรับการใช้งานคีมาโดยเฉพาะอย่างยิ่ง\dt *.*
\dt schema_name.*
เชื่อมต่อกับคำสั่ง psql -> psql --u {userName} {DBName} จากนั้นคุณสามารถพิมพ์คำสั่งด้านล่างเพื่อตรวจสอบว่ามีสกีมากี่รายการใน DB
DBName=# \dn
มิฉะนั้นคุณสามารถตรวจสอบไวยากรณ์โดยขั้นตอนด้านล่างได้อย่างง่ายดาย -
หลังจากเชื่อมต่อฐานข้อมูลแล้วให้กด
DBName=# help
คุณจะได้รับตัวเลือกด้านล่าง:
คุณกำลังใช้ psql ซึ่งเป็นอินเตอร์เฟสบรรทัดคำสั่งไปยัง PostgreSQL
ประเภท: \ ลิขสิทธิ์สำหรับข้อตกลงการกระจาย
\ h สำหรับความช่วยเหลือเกี่ยวกับคำสั่ง SQL
\? สำหรับความช่วยเหลือเกี่ยวกับคำสั่ง psql
\ g หรือยุติด้วยเครื่องหมายอัฒภาคเพื่อเรียกใช้งานแบบสอบถาม
\ q เพื่อออก
จากนั้นกด
DBName=# \?
คุณจะได้รับตัวเลือกทั้งหมดอย่างง่ายดาย
การเริ่มต้นบน postgres 9.3 หนึ่งเคล็ดลับที่คุณสามารถใช้ใน postgres เพื่อรับ sql ที่แน่นอนของคำสั่งที่ให้ข้อมูล (เช่น \ d, \ du, \ dp, ฯลฯ ) ใน psql คือการใช้ทรานแซคชัน นี่คือวิธีที่หลอกลวง เปิดหนึ่งเซสชัน postgres จากนั้นพิมพ์คำสั่งของคุณ:
begin;
\dn+
ในขณะที่ธุรกรรมยังทำงานอยู่ให้เปิดเซสชัน postgres อีกครั้งและสอบถาม pg_stat_activity และคุณจะได้รับ sql ที่แน่นอน
postgres=# select query from pg_stat_activity ;
query
-----------------------------------------------------------------------
SELECT n.nspname AS "Name", +
pg_catalog.pg_get_userbyid(n.nspowner) AS "Owner", +
pg_catalog.array_to_string(n.nspacl, E'\n') AS "Access privileges",+
pg_catalog.obj_description(n.oid, 'pg_namespace') AS "Description" +
FROM pg_catalog.pg_namespace n +
WHERE n.nspname !~ '^pg_' AND n.nspname <> 'information_schema' +
ORDER BY 1;
\set ECHO_HIDDEN on
psql -E