Matikan pager untuk output interaktif psql

36

Kami beralih dari PostgreSQL 8.3 ke 9.0. Mungkin ini adalah fitur baru atau mungkin hanya perubahan konfigurasi, tetapi sekarang ketika output dari perintah (seperti, \d tablename) melebihi ruang vertikal yang terlihat, psql tampaknya menyalurkan output melalui sesuatu yang mirip less. Saya tidak dapat menemukan cara untuk mematikan perilaku ini. Ada saran? Terima kasih.

PS Saya menggulir buffer menggunakan Putty Shift+PgUp/PgDnjadi saya tidak perlu paging psql. Plus, ketika saya menekan qdalam paging psql, outputnya menghilang sepenuhnya dari layar (sama seperti setelah berjalan lessdi bash), yang salah dari sudut pandang kasus penggunaan umum.

Yuri Ushakov
sumber
Jika Anda di sini dari Google hanya mencoba menelusuri pager, itu Space- bukan n atau PgDn atau panah bawah seperti yang saya coba.
Noumenon

Jawaban:

35

Ada dokumentasi untuk itu.

Dari bagian \ pset dari manual psql :

pager

Mengontrol penggunaan program pager untuk kueri dan output bantuan psql. Jika variabel lingkungan PAGER diatur, output disalurkan ke program yang ditentukan. Kalau tidak, standar yang bergantung pada platform (seperti lebih) digunakan.

Ketika opsi pager tidak aktif, program pager tidak digunakan. Ketika opsi pager aktif, pager digunakan saat yang tepat, yaitu, ketika output ke terminal dan tidak akan muat di layar. Opsi pager juga dapat diatur ke selalu, yang menyebabkan pager digunakan untuk semua output terminal terlepas dari apakah itu cocok di layar. \ pset pager tanpa nilai menghidupkan dan mematikan pager.

Sven
sumber
9
Terima kasih. Solusi terlihat lengkap seperti: psql -P pager.
Yuri Ushakov
3
Saya kira Anda bahkan dapat meletakkan opsi di file ~ / .psqlrc Anda untuk menghindari keharusan memasukkan ini setiap waktu.
Sven
Pokoknya untuk melewatkan argumen menjadi kurang?
snapfractalpop
3
Saya juga mengalami masalah Yuri. Seperti dijelaskan di atas. Anda dapat menggunakan \pset pagerdalam psql untuk beralih apakah output pergi ke pager. Namun, Anda harus dapat menggunakan pager dan output tidak hilang dari layar saat Anda keluar. Jawabannya adalah menggunakan 'lebih' daripada 'kurang' sebagai pager. Anda bisa melakukannya dengan mengatur variabel lingkungan PAGER di shell Anda atau dengan menambahkan variabel lingkungan PAGER ke file ~ / .psqlrc.
Michael Rush
4
@MichaelRush: Diatur PAGERke less -Xdan tidak akan menghapus layar.
Sven
21

Coba pengalih:

database_name=# \pset pager
Pager is used for long output.
database_name=# \pset pager
Pager usage is off.
Lebnik
sumber
3
Juga \pset pager [on|off]untuk hasil yang konstan.
lolesque
4

Nonaktifkan pager dengan

\pset pager off
David Jones
sumber
Ini hanya jawaban yang diterima untuk saya. Terima kasih.
Nam G VU
3

tambahkan kode di bawah ini dalam ~ / .psqlrc untuk mempertahankan perilaku

\ pset pager off

Vivin Veerali
sumber
0

Untuk mematikan pager saat menggunakan psqldi shell:

psql -P pager=off ...

Anda juga bisa mengekspor PAGERvariabel lingkungan kosong , jadi Anda tidak perlu menambahkan opsi ke setiap pernyataan. Ini akan tetap diatur sampai Anda menutup shell Anda saat ini.

export PAGER=
psql ...

Akhirnya, solusi yang mungkin lebih mudah diingat: pipa melalui output cat, yang akan menonaktifkan pager default

psql ... | cat
mivk
sumber
0

Cara terbaik dalam ringkasan adalah mengatur variabel lingkungan untuk pager, misalnya

PAGER='less -X' psql

atau mengaturnya sekali

export PAGER='less -X'

lalu lari

psql

Taman Brad
sumber