วิธีปิดส่วนหัวใน psql เท่านั้น (postgresql)


18

ฉันใช้ PostgreSQL 9.1.X

ฉันพยายามสร้างpsqlสคริปต์เพื่อพิมพ์ผลลัพธ์โดยไม่มีส่วนหัว แต่รวมส่วนท้ายด้วย

http://www.postgresql.org/docs/9.1/static/app-psql.html

จากเอกสารด้านบน

\pset tuples_only

จะปิดทั้งส่วนหัวและส่วนท้าย และ

\pset footer off

จะปิดท้ายกระดาษเท่านั้น

มีวิธีในpsqlการปิดส่วนหัวและเก็บส่วนท้ายหรือไม่

ฉันรู้ว่ามีหลายวิธีในการแก้ไขปัญหานี้โดยใช้ shell / perl / เครื่องมือข้อความใด ๆ ก็ตามที่คุณต้องการ แต่ฉันสงสัยว่าทำไมมีการกำหนดค่าสำหรับส่วนท้าย

id <--this line I don't want
---- <-- this line I don't want either
 1  <-- this line, yes
(1 row) <-- yes, I want it!

คุณอยู่ในระบบยูนิกซ์หรือไม่? ถ้าเป็นเช่นนั้นคุณสามารถใช้ส่วนหัว / ส่วนท้าย / grep / awk / sed / ล้านสิ่งอื่น ๆ ได้
Philᵀᴹ

คำตอบ:


10

เมื่อรันpsqlจากเชลล์คุณสามารถใช้-tตัวเลือก (พิมพ์ tuples เท่านั้น):

$ psql -t -c "SELECT version();"
 PostgreSQL 9.5.5 on x86_64-pc-linux-gnu, compiled by gcc (Debian 4.9.2-10) 4.9.2, 64-bit

ภายในpsqlใช้\tเพื่อปิดการพิมพ์ส่วนหัวและจำนวนแถว


7

วิธีการแก้ปัญหาของฉันไม่ได้ค่อนข้างปิด แต่ทิ้งส่วนหัว

คุณสามารถลองtailใช้คำสั่งเอาต์พุต:

\o | tail -n +2

ด้วย\oคุณสามารถเปลี่ยนเส้นทางเอาต์พุตไปยังไฟล์หรือไพพ์เช่นในกรณีนี้ โซลูชันนี้มีข้อบกพร่องเช่นกัน: อย่างน้อยก็ในกรณีของฉันหลังจากดำเนินการSELECT [...]ฉันจะไม่กลับไปที่พรอมต์เว้นแต่ฉันจะกดปุ่ม และแถวเอาต์พุตแรกจะปรากฏขึ้นหลังจากพร้อมต์ หากคุณเปลี่ยนเส้นทางผลลัพธ์ไปยังไฟล์แสดงว่าไม่ควรมีปัญหา

พฤติกรรมนี้สามารถหลีกเลี่ยงได้หากคุณตั้งค่าPAGERตัวแปรสภาพแวดล้อมอย่างเหมาะสมและใช้เพจเจอร์เสมอคือpsql:

$ export PAGER='tail -n +3'

$ psql -U postgres -d test
psql (9.1.4, server 9.1.5)

test=# \pset pager always
Pager is always used.

test=# select * from a;
  2 | b
  3 | b
(2 rows)

ในpsqlรุ่นที่มาพร้อมกับ PostgreSQL 9.2 คุณสามารถใช้\setenvคำสั่งเพื่อความสะดวก (ฉันหมายความว่าคุณไม่จำเป็นต้องตั้งค่าตัวแปร env ซึ่งอาจส่งผลต่อแอปพลิเคชันอื่นเช่นกัน)


แฮ็คดีตัวเลือกเพจเจอร์น่ารู้ แต่จริงๆไม่มีตัวเลือกสำหรับส่วนหัวของตัวเอง? บางทีฉันควรตรวจสอบจดหมายไปรษณีย์ของ postgresql
skong

@sinbadblue ไม่เมื่อคุณได้ตรวจสอบแล้วไม่ คุณสามารถโพสต์คำขอคุณสมบัติได้ :) จะเป็นความก้าวหน้าที่มีประโยชน์
dezso

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