Làm thế nào để tắt tiêu đề chỉ trong psql (postgresql)


17

Tôi đang sử dụng PostgreSQL 9.1.X

Tôi đang cố gắng xây dựng psqltập lệnh để in kết quả mà không có tiêu đề mà bao gồm cả chân trang.

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

Từ tài liệu trên

\pset tuples_only

sẽ tắt cả tiêu đề và chân trang. và

\pset footer off

sẽ tắt footer thôi.

Có cách nào psqlđể tắt tiêu đề và giữ chân trang không?

Tôi biết có nhiều cách để khắc phục sự cố này bằng cách sử dụng shell / perl / bất kỳ công cụ văn bản nào bạn thích, tuy nhiên tôi tự hỏi tại sao có một cấu hình cho chân trang mà không phải là một tiêu đề cho tiêu đề?

id <--this line I don't want
---- <-- this line I don't want either
 1  <-- this line, yes
(1 row) <-- yes, I want it!

Bạn có trên Unix không? Nếu vậy, bạn có thể sử dụng head / tail / grep / awk / sed / a triệu thứ khác
Philᵀᴹ

Câu trả lời:


9

Khi thực thi psqltừ shell, bạn có thể sử dụng -ttùy chọn (chỉ in các bộ dữ liệu):

$ 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

Trong psqlsử dụng \tđể tắt tiêu đề in và số hàng.


7

Giải pháp của tôi không hoàn toàn tắt mà là loại bỏ các tiêu đề.

Bạn có thể thử tailđầu ra truy vấn:

\o | tail -n +2

Với \o, bạn có thể chuyển hướng đầu ra đến một tệp hoặc một đường ống, như trong trường hợp này. Giải pháp này cũng có khuyết điểm của nó: ít nhất là trong trường hợp của tôi, sau khi thực hiện SELECT [...], tôi không quay lại dấu nhắc trừ khi tôi nhấn phím. Và hàng đầu ra đầu tiên xuất hiện sau một dấu nhắc. Nếu sau đó bạn chuyển hướng đầu ra thành một tệp, thì đó không phải là vấn đề.

Hành vi này có thể tránh được nếu bạn đặt PAGERbiến môi trường một cách thích hợp và luôn sử dụng máy nhắn tin là 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)

Trong psqlphiên bản đi kèm với PostgreQuery 9.2, bạn có thể sử dụng \setenvlệnh để thuận tiện (ý tôi là bạn không phải đặt biến env cũng có thể ảnh hưởng đến các ứng dụng khác).


hack đẹp, tốt để biết tùy chọn máy nhắn tin. nhưng thực sự không có tùy chọn cho tiêu đề chính nó? Có lẽ tôi nên kiểm tra người đưa thư của postgresql
skong

@sinbadblue Không. Như bạn đã kiểm tra, không. Bạn có thể đăng một yêu cầu tính năng, mặc dù :) Sẽ là một tiến bộ hữu ích.
dezso

5

Bạn cần thêm vào một tùy chọn dòng lệnh psql -P "footer=off". Tùy chọn này giữ cho các tiêu đề cột trong kết quả.


Đọc câu hỏi.
Colin 't Hart
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.