รูปแบบเอาต์พุตสำรองสำหรับ psql


315

ฉันใช้ PostgreSQL 8.4 บน Ubuntu ผมมีตารางที่มีคอลัมน์ผ่านc1 cNคอลัมน์มีความกว้างพอที่เลือกคอลัมน์ทั้งหมดทำให้เกิดแถวของผลลัพธ์แบบสอบถามเพื่อตัดหลายครั้ง ดังนั้นเอาต์พุตจึงอ่านยาก

เมื่อผลลัพธ์แบบสอบถามมีเพียงไม่กี่แถวมันจะสะดวกถ้าฉันสามารถดูผลลัพธ์แบบสอบถามที่แต่ละคอลัมน์ของแต่ละแถวอยู่ในบรรทัดแยกกันเช่น

 c1: <value of row 1's c1>
 c2: <value of row 1's c1>
 ...
 cN: <value of row 1's cN>
 ---- some kind of delimiter ----
 c1: <value of row 2's c1>
 etc.

ฉันใช้คำสั่งเหล่านี้บนเซิร์ฟเวอร์ที่ฉันไม่ต้องการติดตั้งซอฟต์แวร์เพิ่มเติมใด ๆ มีการตั้งค่า psql ที่จะให้ฉันทำอะไรแบบนั้นเหรอ?

คำตอบ:


531

ฉันแค่ต้องใช้เวลามากขึ้นในการดูเอกสาร คำสั่งนี้:

\x on

จะทำสิ่งที่ฉันต้องการ นี่คือตัวอย่างผลลัพธ์:

select * from dda where u_id=24 and dda_is_deleted='f';
-[ RECORD 1 ]------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
dda_id             | 1121
u_id               | 24
ab_id              | 10304
dda_type           | CHECKING
dda_status         | PENDING_VERIFICATION
dda_is_deleted     | f
dda_verify_op_id   | 44938
version            | 2
created            | 2012-03-06 21:37:50.585845
modified           | 2012-03-06 21:37:50.593425
c_id               | 
dda_nickname       | 
dda_account_name   | 
cu_id              | 1
abd_id             | 

8
นอกจากนี้คุณยังสามารถลองฟอร์แมต \ pset ได้ (รูปแบบที่อนุญาตไม่มีการจัดแนวจัดวางห่อ HTML, ลาเท็กซ์, troff-ms) หากจอแสดงผลแคบพอคำนั้นจะห่อแต่ละคอลัมน์
ไบรซ์

12
\xเพียงอย่างเดียวจะสลับค่าช่วยให้คุณประหยัดสามการกดแป้น! (มีประโยชน์เมื่อคุณสลับระหว่างเอาต์พุตแบบกว้างและแคบอย่างรวดเร็ว)
msanford

7
หากคุณกำลังมองหาเทียบเท่า\Gจาก MySQL, พยายามผนวก\x\g\xไปยังจุดสิ้นสุดของแบบสอบถามหรือกำหนดทางลัดใน~/.psqlrcการเพิ่มแล้วใช้ที่สิ้นสุด\set G '\\set QUIET 1\\x\\g\\x\\set QUIET 0' :G(การขาดเครื่องหมายอัฒภาค)
Sławomir Lenart

5
เป็นไปได้ไหมที่จะส่งผ่าน " \x on" หรือที่เทียบเท่าที่บรรทัดคำสั่ง? มันจะดีถ้าฉันสามารถบันทึก (ตัวอย่างเช่นโดยใช้นามแฝงเปลือก bash) psql --somethingเพื่อให้ฉันมีตัวเลือกที่เปิดอยู่ตามค่าเริ่มต้น
machineghost

2
@machineghost ใช้งาน-P expanded=autoหรือ--pset expanded=auto
alecdwm

269

(ใหม่) โหมดขยายอัตโนมัติ: \ x อัตโนมัติ

ใหม่สำหรับ Postgresql 9.2; PSQL จะปรับระเบียนให้พอดีกับความกว้างของหน้าจอโดยอัตโนมัติ ก่อนหน้านี้คุณเพิ่งเปิดหรือปิดโหมดขยายและต้องสลับระหว่างโหมดต่าง ๆ ตามที่จำเป็น

  • หากบันทึกสามารถพอดีกับความกว้างของหน้าจอ; psql ใช้การจัดรูปแบบปกติ
  • หากบันทึกไม่สามารถพอดีกับความกว้างของหน้าจอ; psql ใช้โหมดขยาย

หากต้องการใช้สิ่งนี้: \ x อัตโนมัติ

Postgresql 9.5 เอกสารในคำสั่ง PSQL


หน้าจอกว้างการจัดรูปแบบปกติ:

 id | time  |       humanize_time             | value 
----+-------+---------------------------------+-------
  1 | 09:30 |  Early Morning - (9.30 am)      |   570
  2 | 11:30 |  Late Morning - (11.30 am)      |   690
  3 | 13:30 |  Early Afternoon - (1.30pm)     |   810
  4 | 15:30 |  Late Afternoon - (3.30 pm)     |   930
(4 rows)

หน้าจอแคบจัดรูปแบบขยาย:

-[ RECORD 1 ]-+---------------------------
id            | 1
time          | 09:30
humanize_time | Early Morning - (9.30 am)
value         | 570
-[ RECORD 2 ]-+---------------------------
id            | 2
time          | 11:30
humanize_time | Late Morning - (11.30 am)
value         | 690
-[ RECORD 3 ]-+---------------------------
id            | 3
time          | 13:30
humanize_time | Early Afternoon - (1.30pm)
value         | 810
-[ RECORD 4 ]-+---------------------------
id            | 4
time          | 15:30
humanize_time | Late Afternoon - (3.30 pm)
value         | 930

วิธีเริ่มต้น psql ด้วย \ x อัตโนมัติ

กำหนดค่า\x autoคำสั่งเมื่อเริ่มต้นด้วยการเพิ่มลง.psqlrcในโฮมโฟลเดอร์ของคุณและรีสตาร์ท psql ดูตามมาตรา 'ไฟล์ใน doc psql สำหรับข้อมูลเพิ่มเติม

~ / .psqlrc

\x auto

70

คุณมีตัวเลือกมากมายคุณสับสนอย่างไร :-)? ตัวควบคุมหลักคือ:

# \pset format
# \H
# \x
# \pset pager off

แต่ละคนมีตัวเลือกและการโต้ตอบกับคนอื่น ๆ ตัวเลือกอัตโนมัติมากที่สุดคือ:

# \x off;\pset format wrapped
# \x auto

ตัวเลือก "\ x auto" ที่ใหม่กว่าจะเปลี่ยนเป็นการแสดงผลทีละบรรทัดเท่านั้น "หากจำเป็น"

-[ RECORD 1 ]---------------
id          | 6
description | This is a gallery of oilve oil brands.
authority   | I love olive oil, and wanted to create a place for
reviews and comments on various types.
-[ RECORD 2 ]---------------
id          | 19
description | XXX Test A 
authority   | Testing

รูปแบบ "\ pset ที่เก่ากว่า" นั้นคล้ายกันกับที่มันพยายามจัดวางข้อมูลบนหน้าจอให้เรียบร้อย แต่กลับไปที่ไม่จัดแนวถ้าส่วนหัวไม่พอดี นี่คือตัวอย่างของการพัน:

 id |          description           |            authority            
----+--------------------------------+---------------------------------
  6 | This is a gallery of oilve     | I love olive oil, and wanted to
    ; oil brands.                    ;  create a place for reviews and
    ;                                ;  comments on various types.
 19 | Test Test A                    | Testing

\x autoด้วย\pset pager offเป็นคนดี
mitnk

เป็น\x off; \pset format wrappedและ\x autoตั้งใจที่จะใช้ร่วมกันหรือพวกเขาเป็นพิเศษร่วมกัน?
Demitri

20

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

export PAGER='/usr/bin/less -S'

หรือเพียงแค่less -Sถ้ามันมีอยู่แล้วในบรรทัดคำสั่งถ้าไม่ได้อยู่ในตำแหน่งที่เหมาะสม -S เพื่อดูบรรทัดที่กางออก คุณสามารถส่งต่อในมุมมองที่กำหนดเองหรือตัวเลือกอื่น ๆ ด้วย

ฉันเขียนเพิ่มเติมในPsql Horizontal Display


1
คำตอบนั้นดีจริงๆ ฉันประหลาดใจที่ไม่มีการทำเครื่องหมายที่สูงขึ้น เหมาะสำหรับทุกคนที่ทำงานในเทอร์มินัล
LUser

สิ่งนี้มีประโยชน์มาก
Merlin

สิ่งนี้มีประโยชน์ แต่คุณจะเลื่อนไปทางขวาอย่างไร
Niel de Wet

18

pspg เป็นเครื่องมืออย่างง่ายที่ให้การจัดรูปแบบตารางขั้นสูงการเลื่อนในแนวนอนการค้นหาและคุณสมบัติอื่น ๆ อีกมากมาย

git clone https://github.com/okbob/pspg.git
cd pspg
./configure
make
make install

จากนั้นตรวจสอบให้แน่ใจว่าได้อัปเดตPAGERตัวแปรเช่นในของคุณ~/.bashrc

export PAGER="pspg -s 6" 

โดยที่-sย่อมาจากชุดสี ( 1-14) หากคุณใช้ที่เก็บ pgdgเพียงแค่ติดตั้งแพ็คเกจ (ในการกระจายแบบเดเบียน):

sudo apt install pspg

ตัวอย่าง pspg


7

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


1

คุณสามารถใช้zenityเพื่อแสดงผลลัพธ์แบบสอบถามเป็นตาราง html

  • ขั้นแรกให้ใช้สคริปต์ทุบตีด้วยรหัสต่อไปนี้:

    cat> '/tmp/sql.op'; zenity - text-info --html --filename = '/ tmp / sql.op';

    บันทึกไว้เช่นmypager.sh

  • จากนั้นเอ็กซ์พอร์ตตัวแปรสภาพแวดล้อม PAGER โดยตั้งค่าพา ธ แบบเต็มของสคริปต์เป็นค่า

    ตัวอย่างเช่น: - export PAGER = '/ path / mypager.sh'

  • จากนั้นเข้าสู่โปรแกรม psql จากนั้นดำเนินการคำสั่ง\ H

  • และในที่สุดก็ดำเนินการค้นหาใด ๆ ผลลัพธ์ tabled จะแสดงใน zenity ในรูปแบบตาราง html

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