Alternatywny format wyjściowy dla psql

Używam PostgreSQL 8.4 na Ubuntu. Mam tabelę z kolumnami c1 do cN. Kolumny są na tyle szerokie, że wybranie wszystkich kolumn powoduje wielokrotne zawijanie wierszy wyników zapytań. W związku z tym wyjście jest trudne do odczytania.

Gdy wyniki kwerendy stanowią tylko kilka wierszy, byłoby wygodne, gdybym mógł wyświetlić wyniki kwerendy w taki sposób, że każda kolumna każdego wiersza jest w oddzielnej linii, np.

 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.

Uruchamiam te zapytania na serwerze, na którym wolę nie instalować żadnego dodatkowego oprogramowania. Czy jest jakieś ustawienie psql, które pozwoli mi zrobić coś takiego?

Author: Erwin Brandstetter, 2012-03-07

7 answers

Musiałam poświęcić więcej czasu na przeglądanie dokumentacji. To polecenie:

\x on
Zrobię dokładnie to, co chciałem. Oto Przykładowe wyjście:
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             | 
 391
Author: user100464,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-03-07 16:12:16

(Nowy) rozszerzony tryb Auto: \ x auto

Nowość dla Postgresql 9.2; PSQL automatycznie dopasowuje rekordy do szerokości ekranu. wcześniej tryb rozszerzony był włączany lub wyłączany i w razie potrzeby trzeba było przełączać się między trybami.

  • jeśli rekord zmieści się na szerokości ekranu; psql używa normalnego formatowania.
  • jeśli rekord może nie zmieścić się na szerokości ekranu; psql używa trybu rozszerzonego.

Aby uzyskać to użyj: \x auto

Dokumentacja Postgresql 9.5 na komendzie PSQL.


Szeroki ekran, normalne formatowanie:

 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)

Wąski ekran, rozszerzone formatowanie:

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

Jak uruchomić psql z \X auto?

Skonfiguruj polecenie \x auto podczas uruchamiania, dodając je do .psqlrc w folderze domowym i uruchamiając ponownie psql. zajrzyj do sekcji "pliki" w dokumencie psql, aby uzyskać więcej informacji .

~/.psqlrc

\x auto
 188
Author: not a patch,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-07 10:11:16

Masz tak wiele wyborów, jak możesz być zdezorientowany: -)? Główne elementy sterujące to:

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

Każdy ma opcje i interakcje z innymi. Najbardziej automatyczne opcje to:

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

Nowsza opcja "\ x auto "przełącza się na wyświetlanie linii po linii tylko "w razie potrzeby".

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

Starszy "\ PSET format wrapped " jest podobny do tego, że próbuje dopasować dane na ekranie, ale wraca do nienazwanego, jeśli nagłówki nie pasują. Oto przykład zapakowanego:

 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
 46
Author: Bryce,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-05-16 18:48:34

Należy również sprawdzić \H, który włącza/wyłącza wyjście HTML. Niekoniecznie łatwe do odczytania w konsoli, ale interesujące do wrzucania do pliku (patrz \o) lub wklejania do okna edytora/przeglądarki w celu przeglądania, szczególnie z wieloma wierszami stosunkowo złożonych danych.

 6
Author: Wexxor,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-08-01 00:00:30

Ciekawostką jest to, że możemy oglądać stoły poziomo, bez składania. możemy użyć zmiennej środowiskowej PAGER. psql korzysta z niego. możesz ustawić

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

Lub po prostu less -S jeśli jest już dostępny w wierszu poleceń, jeśli nie w odpowiedniej lokalizacji. - S, aby zobaczyć rozłożone linie. możesz przejść w dowolnej niestandardowej przeglądarce lub innych opcjach.

Napisałem więcej w Psql Wyświetlacz poziomy

 5
Author: Dineshkumar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-29 22:03:17

pspg to proste narzędzie, które oferuje zaawansowane formatowanie tabel, przewijanie w poziomie, wyszukiwanie i wiele innych funkcji.

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

Następnie upewnij się, że zaktualizujesz PAGER zmienną np. w swoim ~/.bashrc

export PAGER="pspg -s 6" 

Gdzie -s oznacza Schemat Kolorów (1-14). Jeśli używasz repozytoriów pgdg po prostu zainstaluj pakiet (w dystrybucji podobnej do Debiana):

sudo apt install pspg

przykład pspg

 5
Author: Tombart,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-17 00:48:43

Możesz użyć zenity aby wyświetlić wynik zapytania jako tabelę html.

  • Najpierw zaimplementuj skrypt bash z następującym kodem:

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

    save it like mypager.sh

  • Następnie wyeksportuj zmienną środowiskową PAGER ustawiając pełną ścieżkę skryptu jako wartość.

    Na przykład: - export PAGER= "/path/mypager.sh"

  • Następnie zaloguj się do programu psql i wykonaj polecenie \H

  • I na koniec wykonaj dowolne zapytanie, złożone wyjście wyświetli się w zenity w formacie tabeli html.

 1
Author: purushothaman poovai,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-11-30 13:04:59