Psql के लिए वैकल्पिक आउटपुट स्वरूप


314

मैं Ubuntu पर PostgreSQL 8.4 का उपयोग कर रहा हूं। मैं कॉलम युक्त तालिका है 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 सेटिंग है जो मुझे ऐसा कुछ करने देगा?

जवाबों:


530

मुझे सिर्फ दस्तावेजीकरण के लिए अधिक समय बिताने की आवश्यकता थी। यह आदेश:

\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, लेटेक्स, ट्रॉफ-एमएस) हैं। यदि डिस्प्ले काफी संकरी है तो यह प्रत्येक कॉलम को लपेटेगी।
ब्रायस

12
\xअकेले मूल्य को टॉगल करेगा, जिससे आपको तीन कीस्ट्रोक्स की बचत होगी! (उपयोगी जब आप तेजी से विस्तृत और संकीर्ण आउटपुट के बीच स्विच करते हैं)।
msanford

7
यदि आप \Gमैसकल से समकक्ष की तलाश कर रहे हैं , तो \x\g\xक्वेरी के अंत में जोड़ने का प्रयास करें या ~/.psqlrcजोड़ने में शॉर्टकट को परिभाषित \set G '\\set QUIET 1\\x\\g\\x\\set QUIET 0'करें, फिर अंत में उपयोग करें :G। (नोट में अर्धविरामों की कमी)
स्लावोमिर लेनार्ट

5
क्या \x onकमांड लाइन पर किसी तरह " " या समकक्ष पास करना संभव है ? यह अच्छा होगा यदि मैं बस (उदाहरण के लिए, बैश शेल उर्फ ​​का उपयोग करके) बचा सकता हूं, psql --somethingताकि मेरे पास हमेशा डिफ़ॉल्ट रूप से विकल्प उपलब्ध हो।
मशीनगॉस्ट

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 को पुनरारंभ करके स्टार्टअप पर कमांड कॉन्फ़िगर करें। अधिक जानकारी के लिए psql डॉक्टर में 'फ़ाइलें' अनुभाग के अंतर्गत देखें

~ / .Psqlrc

\x auto

69

आपके पास बहुत सारे विकल्प हैं, आप कैसे भ्रमित हो सकते हैं :-)? मुख्य नियंत्रण हैं:

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

प्रत्येक के पास अन्य लोगों के साथ विकल्प और इंटरैक्शन हैं। सबसे स्वचालित विकल्प हैं:

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

नया "\ x ऑटो" विकल्प लाइन-बाय-लाइन डिस्प्ले पर स्विच करता है केवल "यदि आवश्यक हो"।

-[ 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एक अच्छा है।
मटन

कर रहे हैं \x off; \pset format wrappedऔर \x autoएक साथ इस्तेमाल किया जा करने का इरादा है या वे परस्पर अनन्य हैं?
डेमित्री

20

एक दिलचस्प बात यह है कि हम तह के बिना, क्षैतिज रूप से तालिकाओं को देख सकते हैं। हम PAGERपर्यावरण चर का उपयोग कर सकते हैं । psql इसका उपयोग करता है। आप सेट कर सकते हैं

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

या सिर्फ less -Sअगर इसकी पहले से ही कमांड लाइन में उपलब्ध है, यदि उचित स्थान के साथ नहीं। -विस्तृत लाइनों को देखने के लिए। आप इसके साथ किसी भी कस्टम दर्शक या अन्य विकल्पों में पास कर सकते हैं।

मैंने Psql क्षैतिज प्रदर्शन में अधिक लिखा है


1
उत्तर वास्तव में अच्छा है। मुझे आश्चर्य है कि यह उच्च चिह्नित नहीं है। किसी टर्मिनल में काम करने वाले के लिए बिल्कुल सही।
लूसर

यह बेहद सहायक था
मर्लिन

यह उपयोगी है, लेकिन आप दाईं ओर कैसे स्क्रॉल करते हैं?
नील डी वेट

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

आप HTML तालिका के रूप में क्वेरी आउटपुट को प्रदर्शित करने के लिए शून्यता का उपयोग कर सकते हैं ।

  • निम्नलिखित कोड के साथ पहले बैश स्क्रिप्ट लागू करें:

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

    इसे mypager.sh की तरह सहेजें

  • फिर स्क्रिप्ट के पूर्ण पथ को मान के रूप में सेट करके पर्यावरण चर PAGER निर्यात करें।

    उदाहरण के लिए: - निर्यात PAGER = '/ पथ / mypager.sh'

  • इसके बाद psql प्रोग्राम में लॉगिन करें और फिर कमांड \ H निष्पादित करें

  • और अंत में किसी भी क्वेरी को निष्पादित करें, टीबीएबल आउटपुट HTML तालिका प्रारूप में ज़ेनिटी में प्रदर्शित होगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.