#bash #postgresql #psql
#bash #postgresql #psql
Вопрос:
При использовании Psql в Linux, если результат моего SQL-запроса содержит много столбцов или длинных строк данных, он завершит начальное представление, и только после прокрутки в сторону он прекратит перенос и отобразит каждую строку в отдельной строке.
Я пробовал различные pset
варианты, такие как format unaligned
, format aligned
, format wrapped
, columns 0
, columns 1000
, , но, похоже, ни один из них не останавливал перенос полностью, если я не генерирую статический вывод в файл.
Как я могу настроить его так, чтобы он никогда не переносил вывод, оставаясь прокручиваемым и отображая результат с использованием формата таблицы ascii по умолчанию?
Комментарии:
1. Проверьте pspg , пейджер, специально разработанный для использования PostgreSQL.
Ответ №1:
Psql
использует средство просмотра системы для отображения его вывода в консоли. В bash
нем, вероятно, используются less
функции с возможностью прокрутки / просмотра страниц, которые он предоставляет. Чтобы использовать другой просмотрщик или использовать другие настройки, вам просто нужно установить переменную PAGER
среды.
Запуск psql
для использования less
с опцией -S
or --chop-long-lines
, похоже, сработал для меня:
PAGER="less -S" psql
Вы также можете переключить эту функцию во время просмотра вывода less
, введя -S
и Enter.
Комментарии:
1.
psql() ( PAGER="less -S" command psql "$@" )
2. Кажется, моя версия PSQL использует
less -S
по умолчанию, есть ли возможность включить перенос, не отключая пейджер?
Ответ №2:
Чтобы отключить обернутый вывод запроса select.
pset пейджер включен и pset пейджер выключен, чтобы вернуться к более старому виду вывода.
Комментарии:
1. Это полностью отключает пейджер, предотвращая прокрутку вверх и вниз по большим наборам данных (он попытается распечатать весь вывод на терминал). Использование подсказки @Silveri по-прежнему позволяет использовать пейджер для прокрутки, но просто предотвращает перенос.
Ответ №3:
-F
-S
в некоторых случаях значение less или flag приведет d some_table
к тому, что вывод не будет отображаться.
-F or --quit-if-one-screen
Causes less to automatically exit if the entire file can be
displayed on the first screen.
-S or --chop-long-lines
Causes lines longer than the screen width to be chopped rather than folded.
That is, the portion of a long line that does not fit in the screen width is
not shown. The default is to fold long lines; that is, display the remainder
on the next line.
Используйте их следующим образом:
PAGER="less -S" psql
Кажется более безопасным из-за неудобства ручного выхода less.
Комментарии:
1. Спасибо! Простой ввод -S затем enter отключит перенос строк при просмотре вывода запроса psql
Ответ №4:
Пейджер по умолчанию для psql
is less
. Тогда для не обернутых строк должно быть use less -S
. PAGER="less -S" psql
это хороший подход. Но внутри psql
вы можете использовать
setenv PAGER 'less -S'
Ответ №5:
вероятно, вам следует использовать aligned
формат для вывода:
pset format aligned
Вы можете проверить все доступные форматы в соответствии с вашими потребностями:
pset format TAB
aligned html latex-longtable unaligned
asciidoc latex troff-ms wrapped
Также вы должны проверить PAGER
настроенное значение в вашей среде
Комментарии:
1.
aligned
вставляет результаты в таблицу ASCII-art для меня, что для длинных значений означает, что я получаю много строк-----
для создания заголовка таблицы перед фактическими значениями.unaligned
позволяет избежать этого.2. для меня это было лучше
pset format wrapped
.3. вы можете добавить -t, и он пропустит заголовки таблиц. И -q, чтобы пропустить некоторые другие заголовки.