Отключить перенос в выводе Psql

#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, чтобы пропустить некоторые другие заголовки.