ปิดเพจเจอร์สำหรับเอาต์พุตแบบโต้ตอบของ psql


35

เราเปลี่ยนจาก PostgreSQL 8.3 เป็น 9.0 บางทีมันอาจจะเป็นคุณลักษณะใหม่หรือบางทีอาจจะเป็นเพียงแค่เปลี่ยนการตั้งค่า แต่ตอนนี้เมื่อผลลัพธ์จากคำสั่ง (เหมือน\d tablename) เกินพื้นที่ตามแนวตั้งที่มองเห็น psql lessดูเหมือนจะท่อส่งออกผ่านสิ่งที่คล้ายกับ ฉันหาวิธีปิดพฤติกรรมนี้ไม่ได้ คำแนะนำใด ๆ? ขอบคุณ

PS ฉันเลื่อนบัฟเฟอร์โดยใช้ PuTTY Shift+PgUp/PgDnดังนั้นฉันจึงไม่ต้องการการสลับหน้า psql นอกจากนี้เมื่อฉันกดqเพจของ psql เอาต์พุตของมันจะหายไปจากหน้าจอทั้งหมด (เหมือนหลังจากทำงานlessในทุบตี) ซึ่งผิดจากมุมมองการใช้งานทั่วไป


หากคุณอยู่ที่นี่จาก Google เพียงแค่พยายามเลื่อนดูเพจเจอร์มันSpaceไม่ใช่ลูกศร n หรือ PgDn หรือลูกศรลงอย่างที่ฉันเคยลอง
Noumenon

คำตอบ:


35

มีเอกสารสำหรับสิ่งนั้น

จากส่วน \ pset ของคู่มือ psql :

เพจเจอร์

ควบคุมการใช้โปรแกรมเพจเจอร์สำหรับเคียวรีและเอาต์พุตวิธีใช้ psql หากตั้งค่าตัวแปรสภาพแวดล้อม PAGER เอาต์พุตจะถูกไพพ์ไปยังโปรแกรมที่ระบุ มิฉะนั้นจะใช้ค่าเริ่มต้นขึ้นอยู่กับแพลตฟอร์ม (เช่นมากกว่า)

เมื่อปิดตัวเลือกเพจเจอร์โปรแกรมเพจเจอร์จะไม่ถูกใช้ เมื่อเปิดใช้งานตัวเลือกเพจเจอร์เพจเจอร์จะถูกใช้เมื่อเหมาะสมเช่นเมื่อเอาต์พุตอยู่ที่เทอร์มินัลและจะไม่พอดีกับหน้าจอ ตัวเลือกเพจเจอร์ยังสามารถตั้งค่าได้เสมอซึ่งทำให้เพจเจอร์ใช้สำหรับเอาต์พุตเทอร์มินัลทั้งหมดโดยไม่คำนึงว่าเหมาะสมกับหน้าจอหรือไม่ \ pset เพจเจอร์ที่ไม่มีค่าสลับเปิดใช้เพจเจอร์เปิดและปิด


9
ขอขอบคุณ. psql -P pagerลักษณะโซลูชั่นที่สมบูรณ์ต้องการ:
Yuri Ushakov

3
ฉันเดาว่าคุณสามารถใส่ตัวเลือกในไฟล์ ~ / .psqlrc ของคุณเพื่อหลีกเลี่ยงการป้อนสิ่งนี้ทุกครั้ง
สเวน

ยังไงก็ตามที่จะผ่านการขัดแย้งให้น้อยลง?
snapfractalpop

3
ฉันเจอปัญหาของยูริด้วย ตามที่อธิบายไว้ข้างต้น คุณสามารถใช้\pset pagerใน psql เพื่อสลับว่าเอาต์พุตไปที่เพจเจอร์หรือไม่ อย่างไรก็ตามคุณควรใช้เพจเจอร์และไม่ให้เอาต์พุตหายไปจากหน้าจอเมื่อคุณออก คำตอบคือใช้ 'เพิ่มเติม' แทน 'น้อยกว่า' เป็นเพจเจอร์ คุณสามารถทำได้โดยการตั้งค่าตัวแปรสภาพแวดล้อม PAGER ในเชลล์ของคุณหรือโดยการเพิ่มตัวแปรสภาพแวดล้อม PAGER ไปยังไฟล์ ~ / .psqlrc
Michael Rush

4
@MichaelRush: ตั้งค่าPAGERเป็นless -Xและจะไม่ล้างหน้าจอ
สเวน

21

ลองใช้ตัวสลับ:

database_name=# \pset pager
Pager is used for long output.
database_name=# \pset pager
Pager usage is off.

3
รวม\pset pager [on|off]ถึงผลลัพธ์ที่คงที่
lolesque



0

วิธีปิดเพจเจอร์เมื่อใช้psqlในเชลล์:

psql -P pager=off ...

คุณสามารถส่งออกPAGERตัวแปรสภาพแวดล้อมที่ว่างเปล่าดังนั้นคุณไม่จำเป็นต้องเพิ่มตัวเลือกในทุก ๆ คำสั่ง มันจะยังคงอยู่จนกว่าคุณจะปิดเชลล์ปัจจุบันของคุณ

export PAGER=
psql ...

ในที่สุดการแก้ปัญหาที่อาจจำได้ง่ายกว่าคือไพพ์เอาต์พุตผ่านcatซึ่งจะปิดใช้งานเพจเจอร์เริ่มต้น

psql ... | cat
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.