psql에서만 헤더를 끄는 방법 (postgresql)


18

PostgreSQL 9.1.X를 사용하고 있습니다

psql머리글없이 바닥 글을 포함하여 결과를 인쇄 하는 스크립트를 작성 하려고합니다 .

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

위의 문서에서

\pset tuples_only

머리글과 바닥 글을 모두 끕니다. 과

\pset footer off

바닥 글 만 해제합니다.

psql머리글을 끄고 바닥 글을 켜는 방법이 있습니까?

쉘 / 펄 / 원하는 텍스트 도구를 사용 하여이 문제를 해결할 수있는 많은 방법이 있다는 것을 알고 있지만 바닥 글에 대한 구성이 있지만 머리글에 대한 구성은없는 이유가 궁금합니다.

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

당신은 유닉스에 있습니까? 그렇다면 head / tail / grep / awk / sed / 백만 가지 다른 것들을 사용할 수 있습니다
Philᵀᴹ

답변:


10

psql쉘에서 실행할 때 -t다음과 같은 옵션을 사용할 수 있습니다 .

$ 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

내에서 psql사용 \t헤더와 행 수를 인쇄 끕니다.


7

내 솔루션은 완전히 꺼져 있지 않고 헤더를 버립니다.

tail쿼리 출력을 시도 할 수 있습니다 .

\o | tail -n +2

을 사용하면 \o이 경우와 같이 출력을 파일 또는 파이프로 리디렉션 할 수 있습니다. 이 솔루션에도 결함이 있습니다. 적어도 내 경우에는을 실행 한 후에 SELECT [...]키를 누르지 않으면 프롬프트로 돌아 가지 않습니다. 그리고 프롬프트 후 첫 번째 출력 행이 나타납니다. 그런 다음 출력을 파일로 리디렉션하면 문제가되지 않습니다.

PAGER환경 변수를 적절하게 설정 하고 항상 호출기를 사용 하는 경우이 동작을 피할 수 있습니다 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)

psqlPostgreSQL 9.2와 함께 제공 되는 버전 에서는 \setenv편의를 위해 명령을 사용할 수 있습니다 (다른 응용 프로그램에도 영향을 줄 수있는 env 변수를 설정할 필요가 없음을 의미합니다).


좋은 해킹, 호출기 옵션을 아는 것이 좋습니다. 그러나 실제로 헤더 자체에 대한 옵션이 없습니까? 아마 postgresql의 mailist를 확인해야합니다
skong

@sinbadblue 아니요. 이미 확인했듯이 아니요. 기능 요청을 게시 할 수 있지만 :) 유용한 발전이 될 것입니다.
dezso

5

psql 명령 행 옵션을 추가해야합니다 -P "footer=off". 이 옵션은 결과에 열 제목을 유지합니다.


질문을 읽으십시오.
Colin 't Hart
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.