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

174

Я использую PostgreSQL 8.4 на Ubuntu. У меня есть таблица со столбцами c1 через cN. Столбцы достаточно широкие, что выбор всех столбцов приводит к тому, что ряд результатов запроса обрабатывается несколько раз. Следовательно, выход трудно прочитать.

Когда результаты запроса составляют всего несколько строк, было бы удобно, если бы я мог просматривать результаты запроса, чтобы каждый столбец каждой строки находился в отдельной строке, например.

 c1: <value of row 1 c1>
 c2: <value of row 1 c1>
 ...
 cN: <value of row 1 cN>
 ---- some kind of delimiter ----
 c1: <value of row 2 c1>
 etc.

Я запускаю эти запросы на сервере, где я бы предпочел не устанавливать какое-либо дополнительное программное обеспечение. Есть ли настройка psql, которая позволит мне сделать что-то подобное?

Теги:
psql
output-formatting

6 ответов

337
Лучший ответ

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

\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             | 
  • 5
    Вы также можете попробовать формат \ pset с переносом (допустимые форматы не выровнены, выровнены, перенесены, html, latex, troff-ms). Если дисплей достаточно узок, он будет переносить по словам каждый столбец.
  • 8
    \x один будет переключать значение, сохраняя вам три нажатия клавиш! (Полезно, когда вы быстро переключаетесь между широким и узким выходами).
Показать ещё 5 комментариев
158

(новый) Расширенный автоматический режим:\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 auto

Настройте команду \x auto при запуске, добавив ее в .psqlrc в домашней папке и перезапустив psql. Обратитесь к разделу "Файлы" в документе psql для получения дополнительной информации.

~/.psqlrc

\x auto
38

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

# \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
  • 12
    Раскрытие: я создал формат \ pset
  • 0
    \x auto с \pset pager off - это хорошо.
6

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

5

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

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

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

Я написал больше в Горизонтальный просмотр Psql

  • 1
    Ответ действительно хорош. Я удивлен, что это не отмечено выше. Идеально подходит для тех, кто работает в терминале.
  • 0
    Это было очень полезно
0

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

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

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

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

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

    например: - экспортировать PAGER = '/path/mypager.sh'

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню