psql의 대체 출력 형식


315

우분투에서 PostgreSQL 8.4를 사용하고 있습니다. c1통해 열이있는 테이블이 있습니다 cN. 모든 열을 선택하면 한 행의 쿼리 결과가 여러 번 랩핑 될 수있을 정도로 열이 넓습니다. 결과적으로 출력을 읽기가 어렵습니다.

쿼리 결과가 단지 몇 개의 행을 구성 할 때 각 행의 각 열이 별도의 줄에 있도록 쿼리 결과를 볼 수 있다면 편리합니다.

 c1: <value of row 1's c1>
 c2: <value of row 1's c1>
 ...
 cN: <value of row 1's cN>
 ---- some kind of delimiter ----
 c1: <value of row 2's c1>
 etc.

추가 소프트웨어를 설치하지 않으려는 서버에서 이러한 쿼리를 실행하고 있습니다. 그런 식으로 할 수있는 psql 설정이 있습니까?

답변:


531

방금 문서를 응시하는 데 더 많은 시간을 소비해야했습니다. 이 명령은

\x on

내가 원하는 것을 정확하게 할 것입니다. 다음은 몇 가지 샘플 출력입니다.

select * from dda where u_id=24 and dda_is_deleted='f';
-[ RECORD 1 ]------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
dda_id             | 1121
u_id               | 24
ab_id              | 10304
dda_type           | CHECKING
dda_status         | PENDING_VERIFICATION
dda_is_deleted     | f
dda_verify_op_id   | 44938
version            | 2
created            | 2012-03-06 21:37:50.585845
modified           | 2012-03-06 21:37:50.593425
c_id               | 
dda_nickname       | 
dda_account_name   | 
cu_id              | 1
abd_id             | 

8
\ pset format wrap (허용 된 형식은 정렬되지 않은, 정렬 된, 줄 바꿈 된, html, 라텍스, troff-ms)을 시도 할 수도 있습니다. 디스플레이가 충분히 좁 으면 각 열을 자동 줄 바꿈합니다.
Bryce

12
\x혼자서 값을 토글하면 세 번의 키 입력이 줄어 듭니다! (넓은 출력과 좁은 출력을 빠르게 전환 할 때 유용합니다).
msanford

7
\GMysql 과 동등한 것을 찾으려면 \x\g\x쿼리 끝에 추가 하거나 ~/.psqlrc추가 단축키를 정의 \set G '\\set QUIET 1\\x\\g\\x\\set QUIET 0'하고 끝에 사용하십시오 :G. (세미콜론의 노트 부족)
투입 Sławomir Lenart

5
\x on명령 행에서 " "또는 이와 동등한 것을 전달할 수 있습니까? bash 쉘 별칭을 사용하여 저장하면 psql --something항상 기본적으로 옵션이 설정되어 있으면 좋을 것 입니다.
machineghost

2
@machineghost 사용 -P expanded=auto또는--pset expanded=auto
alecdwm

269

(New) 확장 자동 모드 : \ x auto

Postgresql 9.2의 새로운 기능; PSQL은 레코드를 화면 너비에 자동으로 맞 춥니 다. 이전에는 모드를 켜거나 끄고 필요에 따라 모드를 전환해야했습니다.

  • 레코드가 화면 너비에 맞을 수있는 경우 psql은 일반적인 형식을 사용합니다.
  • 레코드가 화면 너비에 맞지 않는 경우 ; psql은 확장 모드를 사용합니다.

이것을 사용하려면 \ x auto

PSQL 명령에 대한 Postgresql 9.5 설명서.


와이드 스크린, 일반 형식 :

 id | time  |       humanize_time             | value 
----+-------+---------------------------------+-------
  1 | 09:30 |  Early Morning - (9.30 am)      |   570
  2 | 11:30 |  Late Morning - (11.30 am)      |   690
  3 | 13:30 |  Early Afternoon - (1.30pm)     |   810
  4 | 15:30 |  Late Afternoon - (3.30 pm)     |   930
(4 rows)

좁은 화면, 확장 된 형식 :

-[ RECORD 1 ]-+---------------------------
id            | 1
time          | 09:30
humanize_time | Early Morning - (9.30 am)
value         | 570
-[ RECORD 2 ]-+---------------------------
id            | 2
time          | 11:30
humanize_time | Late Morning - (11.30 am)
value         | 690
-[ RECORD 3 ]-+---------------------------
id            | 3
time          | 13:30
humanize_time | Early Afternoon - (1.30pm)
value         | 810
-[ RECORD 4 ]-+---------------------------
id            | 4
time          | 15:30
humanize_time | Late Afternoon - (3.30 pm)
value         | 930

\ x auto로 psql을 시작하는 방법?

\x auto시작시 명령을 .psqlrc홈 폴더 에 추가하고 psql을 다시 시작하여 명령을 구성 하십시오. 자세한 내용은 psql 문서의 '파일'섹션을 참조하십시오 .

~ / .psqlrc

\x auto

70

선택의 폭이 넓어 어떻게 혼란 스러울 수 있습니까? 주요 컨트롤은 다음과 같습니다.

# \pset format
# \H
# \x
# \pset pager off

각각에는 다른 옵션과 상호 작용이 있습니다. 가장 자동적 인 옵션은 다음과 같습니다.

# \x off;\pset format wrapped
# \x auto

최신 "\ x auto"옵션은 "필요한 경우"만 라인 단위 표시로 전환됩니다.

-[ RECORD 1 ]---------------
id          | 6
description | This is a gallery of oilve oil brands.
authority   | I love olive oil, and wanted to create a place for
reviews and comments on various types.
-[ RECORD 2 ]---------------
id          | 19
description | XXX Test A 
authority   | Testing

이전의 "\ pset wrap format"은 화면에 데이터를 깔끔하게 맞추려고하지만 헤더가 맞지 않으면 정렬되지 않은 상태로 돌아갑니다. 래핑 된 예는 다음과 같습니다.

 id |          description           |            authority            
----+--------------------------------+---------------------------------
  6 | This is a gallery of oilve     | I love olive oil, and wanted to
    ; oil brands.                    ;  create a place for reviews and
    ;                                ;  comments on various types.
 19 | Test Test A                    | Testing

\x auto와 함께 \pset pager off좋은 것입니다.
mitnk

인가 \x off; \pset format wrapped\x auto함께 사용하기위한 것 또는 상호 배타적인가?
Demitri

20

흥미로운 점은 접지 않고 테이블을 가로로 볼 수 있다는 것입니다. PAGER환경 변수 를 사용할 수 있습니다 . psql은 그것을 사용합니다. 당신은 설정할 수 있습니다

export PAGER='/usr/bin/less -S'

또는 less -S적절한 위치가 아닌 경우 명령 행에서 이미 사용 가능한 경우. 펼쳐진 선을 보려면 -S 모든 사용자 정의 뷰어 또는 다른 옵션을 전달할 수 있습니다.

Psql Horizontal Display 에서 더 많이 썼습니다.


1
대답은 정말 좋습니다. 더 높게 표시되지 않은 것에 놀랐습니다. 터미널에서 일하는 사람에게 적합합니다.
L 사용자

이것은 매우 도움이되었습니다
Merlin

이것은 유용하지만 어떻게 오른쪽으로 스크롤합니까?
Niel de Wet

18

pspg 고급 테이블 형식, 가로 스크롤, 검색 및 더 많은 기능을 제공하는 간단한 도구입니다.

git clone https://github.com/okbob/pspg.git
cd pspg
./configure
make
make install

그런 다음 PAGER변수 를 업데이트 하십시오 (예 :~/.bashrc

export PAGER="pspg -s 6" 

여기서 -s색상에 대한 스탠드 ( 1-14). 당신이 사용하는 경우 pgdg 저장소를 단순히 (배포판처럼 데비안) 패키지를 설치합니다 :

sudo apt install pspg

pspg 예


7

또한 HTML 출력을 켜거나 끄는 \ H를 확인하십시오. 콘솔에서 쉽게 읽을 수있는 것은 아니지만 파일로 덤프하거나 (\ o 참조) 편집기 / 브라우저 창에 붙여 넣어 볼 수 있습니다. 특히 여러 행의 비교적 복잡한 데이터가있는 경우에 유용합니다.


1

zenity 를 사용하여 쿼리 출력을 html 테이블로 표시 할 수 있습니다 .

  • 먼저 다음 코드로 bash 스크립트를 구현하십시오.

    cat> '/tmp/sql.op'; zenity --text-info --html --filename = '/ tmp / sql.op';

    mypager.sh 처럼 저장

  • 그런 다음 스크립트의 전체 경로를 값으로 설정하여 환경 변수 PAGER를 내보내십시오.

    예를 들면 다음과 같습니다 .- export PAGER = '/ path / mypager.sh'

  • 그런 다음 psql 프로그램에 로그인 한 다음 \ H 명령을 실행하십시오.

  • 마지막으로 쿼리를 실행하면 테이블 출력이 html 테이블 형식으로 zenity로 표시됩니다.

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