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.


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.


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.

3
Juga \pset pager [on|off]untuk hasil yang konstan.
lolesque


3

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

\ pset pager off


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

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

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.