Psql için alternatif çıktı biçimi


315

Ubuntu üzerinde PostgreSQL 8.4 kullanıyorum. Ben sütunlu bir tablo var c1aracılığıyla cN. Sütunlar, tüm sütunları seçmenin bir satır sorgu sonucunun birden çok kez sarılmasına neden olacak kadar geniştir. Sonuç olarak, çıktıyı okumak zor.

Sorgu sonuçları yalnızca birkaç satır oluşturduğunda, sorgu sonuçlarını her satırın her sütunu ayrı bir satırda olacak şekilde görüntüleyebilseydim, örn.

 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.

Bu sorguları herhangi bir ek yazılım yüklememeyi tercih ettiğim bir sunucuda çalıştırıyorum. Böyle bir şey yapmama izin verecek bir psql ayarı var mı?

Yanıtlar:


531

Belgelere bakarak daha fazla zaman harcamak zorunda kaldım. Bu komut:

\x on

tam olarak istediğimi yapacak. İşte bazı örnek çıktı:

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
Ayrıca sarılmış \ pset biçimini de deneyebilirsiniz (izin verilen biçimler hizalanmamış, hizalanmış, sarılmış, html, lateks, troff-ms'dir). Ekran yeterince darsa, her sütunu sözcük olarak sarar.
Bryce

12
\xtek başına değeri değiştirir, üç tuşa basarak tasarruf sağlar! (Geniş ve dar çıkışlar arasında hızlı geçiş yaptığınızda kullanışlıdır).
msanford

7
\GMysql'den eşdeğerini arıyorsanız \x\g\x, sorgunun sonuna ekleyin veya ~/.psqlrceklemede kısayol tanımlayın \set G '\\set QUIET 1\\x\\g\\x\\set QUIET 0', ardından sonunda kullanın :G. (noktalı virgül eksikliğine dikkat edin)
Sławomir Lenart

5
\x onKomut satırından bir şekilde " " veya eşdeğerini geçmek mümkün mü ? Her psql --somethingzaman varsayılan olarak açık seçeneğin olması için kaydedebilseydim (örneğin, bir bash kabuk takma adı kullanarak) .
machineghost

2
@machineghost Use -P expanded=autoor--pset expanded=auto
alecdwm

269

(Yeni) Genişletilmiş Otomatik Mod: \ x otomatik

Postgresql 9.2 için yeni; PSQL, kayıtları otomatik olarak ekran genişliğine sığdırır. önceden sadece genişletilmiş modu açmış veya kapatmış ve modlar arasında gerektiği gibi geçiş yapmak zorunda kaldınız.

  • Kayıt ekranın genişliğine sığabiliyorsa; psql normal biçimlendirmeyi kullanır.
  • Kayıt Eğer değil ekranın genişliğine sığacak; psql genişletilmiş modu kullanır.

Bunu almak için: \ x auto

Postgresql 9.5 PSQL komutuyla ilgili belgeler.


Geniş ekran, normal biçimlendirme:

 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)

Dar ekran, genişletilmiş biçimlendirme:

-[ 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

\ X auto ile psql nasıl başlatılır?

\x autoBaşlangıçta komutu .psqlrcana klasörünüze ekleyip psql'yi yeniden başlatarak yapılandırın . Daha fazla bilgi için psql doc'deki 'Dosyalar' bölümüne bakın .

~ / .Psqlrc

\x auto

70

Çok fazla seçeneğiniz var, nasıl kafanız karışabilir :-)? Ana kontroller:

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

Her birinin diğerleriyle seçenekleri ve etkileşimleri vardır. En otomatik seçenekler:

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

Daha yeni "\ x auto" seçeneği satır satır görüntülemeye yalnızca "gerekirse" geçer.

-[ 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

Eski "\ pset format sarılmış", verileri ekrana düzgün bir şekilde sığdırmaya çalışmasına benzer, ancak üstbilgiler sığmazsa hizalanmamış olarak geri döner. İşte sarılmış bir örnek:

 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 autoile \pset pager offgüzel bir.
mitnk

Are \x off; \pset format wrappedve \x autobirlikte kullanılmak üzere tasarlanmış ya da birbirini dışlayan?
Demitri

20

İlginç bir şey, masaları katlanmadan yatay olarak görüntüleyebilmemizdir. PAGERortam değişkenini kullanabiliriz . psql kullanır. ayarlayabilirsiniz

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

ya da sadece less -Sdoğru konumda değilse, komut satırında zaten mevcutsa. Katlanmamış çizgileri görüntülemek için -S. bununla herhangi bir özel görüntüleyiciyi veya diğer seçenekleri geçirebilirsiniz.

Psql Yatay Ekranda daha fazla yazdım


1
Cevap gerçekten iyi. Daha yüksek işaretlenmediğine şaşırdım. Terminalde çalışan herkes için mükemmeldir.
LUser

Bu son derece yardımcı oldu
Merlin

Bu yararlıdır, ancak sağa nasıl kaydırırsınız?
Niel de Wet

18

pspg gelişmiş tablo biçimlendirme, yatay kaydırma, arama ve daha birçok özellik sunan basit bir araçtır.

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

PAGERdeğişkeninizi güncellediğinizden emin olun .~/.bashrc

export PAGER="pspg -s 6" 

burada -srenk şeması ( 1-14) anlamına gelir . Pgdg depolarını kullanıyorsanız sadece bir paket yükleyin (Debian benzeri dağıtımda):

sudo apt install pspg

pspg örneği


7

Ayrıca HTML çıkışını açıp kapatan \ H işaretini mutlaka kontrol edin. Konsolda okunması zorunlu değildir, ancak bir dosyaya döküm yapmak (bkz. \ O) veya özellikle nispeten karmaşık verilerin birden çok satırıyla görüntülemek için bir düzenleyici / tarayıcı penceresine yapıştırmak için ilginçtir.


1

sorgu çıktısını html tablosu olarak görüntülemek için zenity kullanabilirsiniz .

  • ilk önce bash betiğini aşağıdaki kodla uygulayın:

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

    mypager.sh gibi kaydet

  • Daha sonra komut dosyasının tam yolunu değer olarak ayarlayarak PAGER ortam değişkenini dışa aktarın.

    örneğin: - PAGER'ı dışa aktar = '/ path / mypager.sh'

  • Sonra psql programına giriş yapın ve \ H komutunu yürütün

  • Ve son olarak herhangi bir sorguyu yürütün, tablolanmış çıktı html tablo formatında zenity görüntülenecektir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.