Альтернативный формат вывода для 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, которая позволит мне сделать что-то подобное?
7 ответов:
мне просто нужно было больше времени смотреть на документацию. Эта команда:
\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 |
(новый) расширенный автоматический режим: \X auto
New для Postgresql 9.2; PSQL автоматически приспосабливает записи к ширине экрана. раньше у вас был только расширенный режим включения или выключения, и вам приходилось переключаться между режимами по мере необходимости.
- если запись может поместиться в ширину экрана; psql использует обычное форматирование.
- если запись может не вписывается в ширину экрана; psql использует расширенный режим.
To получить это использование: \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?
настроить при запуске, добавив его в
.psqlrc
в вашей домашней папке и перезапуск psql. смотрите раздел "файлы" в документе psql для получения дополнительной информации.~/.psqlrc
\x auto
у вас так много вариантов, как можно путать :-)? Основными элементами управления являются:
# \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 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
также обязательно проверьте \H,который включает/выключает вывод HTML. Не обязательно легко читать на консоли, но интересно для сброса в файл (см. \o) или вставки в окно редактора/браузера для просмотра, особенно с несколькими строками относительно сложных данных.
одна интересная вещь мы можем просмотреть таблицы горизонтально, без складывания. мы можем использовать
PAGER
переменные среды. psql использует его. вы можете установитьexport PAGER='/usr/bin/less -S'
или просто
less -S
если он уже доступен в командной строке, если не с правильным расположением. -Просмотр разворачивались линии. вы можете передать в любой пользовательский просмотрщик или другие параметры с ним.Я написал больше в Psql Горизонтальный Дисплей
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-like):sudo apt install pspg
можно использовать Зениты для отображения выходных данных запроса в виде таблицы html.
сначала реализуем скрипт bash со следующим кодом:
cat > ' /tmp / sql.op'; zenity --text-info --html --filename= ' /tmp / sql.op';
сохранить его как mypager.sh
затем экспортируйте пейджер переменной среды, задав полный путь скрипта в качестве значения.
например: экспорт пейджера='/path/mypager.sh'
затем войдите в программу psql, затем выполните команду \H
и, наконец, выполнить любой запрос, табличный вывод будет отображаться в zenity в формате таблицы html.