Cara mematikan header hanya di psql (postgresql)

18

Saya menggunakan PostgreSQL 9.1.X

Saya mencoba membuat psqlskrip untuk mencetak hasil tanpa header tetapi termasuk catatan kaki.

http://www.postgresql.org/docs/9.1/static/app-psql.html

Dari dokumen di atas

\pset tuples_only

akan mematikan header dan footer. dan

\pset footer off

hanya akan mematikan footer.

Apakah ada cara psqluntuk mematikan header dan tetap mengaktifkan footer?

Saya tahu ada banyak cara untuk mengatasi masalah ini menggunakan shell / perl / alat teks apa pun yang Anda suka, namun saya bertanya-tanya mengapa ada konfigurasi untuk footer tetapi tidak satu untuk header?

id <--this line I don't want
---- <-- this line I don't want either
 1  <-- this line, yes
(1 row) <-- yes, I want it!
skong
sumber
Apakah Anda di Unix? Jika demikian, Anda dapat menggunakan head / tail / grep / awk / sed / sejuta hal lainnya
Philᵀᴹ

Jawaban:

10

Saat mengeksekusi psqldari shell Anda dapat menggunakan -topsi (hanya mencetak tuple):

$ psql -t -c "SELECT version();"
 PostgreSQL 9.5.5 on x86_64-pc-linux-gnu, compiled by gcc (Debian 4.9.2-10) 4.9.2, 64-bit

Dalam psqlpenggunaan \tuntuk mematikan mencetak header dan baris menghitung.

Tombart
sumber
7

Solusi saya tidak cukup mematikan tetapi membuang header.

Anda dapat mencoba ke tailoutput kueri:

\o | tail -n +2

Dengan \o, Anda dapat mengarahkan output ke file atau pipa, seperti dalam kasus ini. Solusi ini juga memiliki kekurangannya: setidaknya dalam kasus saya, setelah eksekusi SELECT [...], saya tidak kembali ke prompt kecuali saya menekan tombol. Dan baris output pertama muncul setelah prompt. Jika Anda kemudian mengarahkan output ke file, itu seharusnya tidak menjadi masalah.

Perilaku ini dapat dihindari jika Anda mengatur PAGERvariabel lingkungan dengan tepat dan selalu menggunakan pager adalah psql:

$ export PAGER='tail -n +3'

$ psql -U postgres -d test
psql (9.1.4, server 9.1.5)

test=# \pset pager always
Pager is always used.

test=# select * from a;
  2 | b
  3 | b
(2 rows)

Pada psqlversi yang menyertai PostgreSQL 9.2 Anda dapat menggunakan \setenvperintah untuk kenyamanan (maksud saya Anda tidak perlu mengatur variabel env yang dapat mempengaruhi aplikasi lain juga).

dezso
sumber
hack bagus, bagus untuk mengetahui opsi pager. tapi sungguh tidak ada opsi untuk header itu sendiri? Mungkin saya harus memeriksa mailist postgresql
skong
@sinbadblue No. Seperti yang sudah Anda periksa, tidak. Anda dapat memposting permintaan fitur, :) Akan menjadi kemajuan yang bermanfaat.
dezso
5

Anda perlu menambahkan opsi baris perintah psql -P "footer=off". Opsi ini menjaga judul kolom di hasil.

Karen Muñoz
sumber
Baca pertanyaannya.
Colin 't Hart