Альтернативный формат вывода для psql

Я использую 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, которая позволит мне сделать что-то подобное?


person user100464    schedule 07.03.2012    source источник


Ответы (8)


Мне просто нужно было потратить больше времени на изучение документации. Эта команда:

\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             | 
person user100464    schedule 07.03.2012
comment
Вы также можете попробовать обернутый формат \ pset (допустимые форматы - невыровненный, выровненный, обернутый, html, latex, troff-ms). Если дисплей достаточно узкий, каждый столбец будет переноситься по словам. - person Bryce; 15.04.2013
comment
Только \x будет переключать значение, экономя вам три нажатия клавиши! (Полезно при быстром переключении между широким и узким выходами). - person msanford; 27.08.2015
comment
Если вы ищете эквивалент \G из Mysql, попробуйте добавить \x\g\x в конец запроса или определите ярлык в ~/.psqlrc добавлении \set G '\\set QUIET 1\\x\\g\\x\\set QUIET 0', а затем используйте в конце :G. (обратите внимание на отсутствие точек с запятой) - person Sławomir Lenart; 18.07.2017
comment
Можно ли как-то передать \x on или аналог в командной строке? Было бы неплохо, если бы я мог просто сохранить (например, используя псевдоним оболочки bash) psql --something, чтобы эта опция всегда была включена по умолчанию. - person machineghost; 01.04.2018
comment
@machineghost Используйте -P expanded=auto или --pset expanded=auto - person alecdwm; 02.10.2018
comment
@alecdwm Я использую pgcli 2.0.0, но этого флага не существует. Мне удалось решить эту проблему, перейдя на pgcli.com/config и изменив свой файл конфигурации. - person Simon Bergot; 10.12.2018
comment
@Simon - pgcli это не та же программа, что и psql;) - person Glyph; 01.01.2019
comment
Как сделать так, чтобы он отображался таким образом, а не с элементом таблицы html (<td>, <tr> и т. Д.)? - person aviya.developer; 16.08.2019

(Новое) Расширенный автоматический режим: \ x auto

Новое в Postgresql 9.2; PSQL автоматически подгоняет записи по ширине экрана. раньше у вас был только расширенный режим, и вам приходилось переключаться между режимами по мере необходимости.

  • Если запись может уместиться в ширину экрана; psql использует обычное форматирование.
  • Если запись не умещается по ширине экрана; psql использует расширенный режим.

Для этого используйте: \ x auto

Документация 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 auto?

Настройте команду \x auto при запуске, добавив ее в .psqlrc в вашей домашней папке и перезапустив psql. Дополнительные сведения см. в разделе «Файлы» документа psql .

~ / .psqlrc

\x auto
person notapatch    schedule 19.04.2013
comment
Какой вариант доступен для полного включения normal formatted таблиц в dashes? Мне тоже нравится внешняя закрывающая коробка, как это делает MySQL. - person NYCeyes; 28.04.2021

У вас так много вариантов, как вы могли запутаться :-)? Основные элементы управления:

# \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 format wrapped» похож в том, что он пытается аккуратно уместить данные на экране, но возвращается к невыровненному, если заголовки не помещаются. Вот пример упаковки:

 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
person Bryce    schedule 16.05.2013
comment
\x auto с \pset pager off - это хорошо. - person mitnk; 27.02.2019
comment
\x off; \pset format wrapped и \x auto предназначены для совместного использования или являются взаимоисключающими? - person Demitri; 01.07.2019

Интересно то, что мы можем просматривать столы по горизонтали, не сворачивая. мы можем использовать переменную окружения PAGER. psql использует это. вы можете установить

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

или просто less -S, если он уже доступен в командной строке, если не в правильном месте. -S для просмотра развернутых строк. вы можете передать с его помощью любую настраиваемую программу просмотра или другие параметры.

Я написал больше в Psql Horizontal Display

person Dineshkumar    schedule 26.11.2015
comment
Ответ действительно хорош. Я удивлен, что он не отмечен выше. Идеально подходит для тех, кто работает в терминале. - person LUser; 27.02.2019
comment
Это было очень полезно - person Merlin; 02.03.2019
comment
Это полезно, но как прокрутить вправо? - person Niel de Wet; 12.06.2019
comment
@NieldeWet для меня использование стрелок вправо и влево для горизонтальной прокрутки работает. Но я ожидал, что смогу сделать это с помощью привязок VIM, но это работает. - person VinGarcia; 03.05.2021

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, просто установите пакет (в дистрибутиве, подобном Debian):

sudo apt install pspg

pspg example

person Tombart    schedule 16.02.2018

Также не забудьте проверить \ H, который включает / выключает вывод HTML. Не обязательно легко читать с консоли, но интересно для сброса в файл (см. \ O) или вставки в окно редактора / браузера для просмотра, особенно с несколькими строками относительно сложных данных.

person Wexxor    schedule 01.08.2012

вы можете использовать zenity для отображения результатов запроса в виде таблицы html.

  • сначала реализуйте сценарий bash со следующим кодом:

    кошка> '/tmp/sql.op'; zenity --text-info --html --filename = '/ tmp / sql.op';

    сохраните его как mypager.sh

  • Затем экспортируйте переменную среды PAGER, задав полный путь скрипта в качестве значения.

    например: - export PAGER = '/ path / mypager.sh'

  • Затем войдите в программу psql и выполните команду \ H

  • И, наконец, выполните любой запрос, вывод в виде таблицы будет отображаться в zenity в формате таблицы html.

person purushothaman poovai    schedule 30.11.2016

Если вы ищете psql command-line mode, как и я, здесь синтаксис --pset expanded=auto

Процитировал это здесь

Параметры командной строки psql:
-P extended = auto
--pset extended = auto
-x
--expanded

Другой второй способ - -q вариант ref

person Nam G VU    schedule 22.12.2020