[postgresql] psql의 대체 출력 형식

우분투에서 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 설정이 있습니까?



답변

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

\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             | 


답변

(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


답변

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

# \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


답변

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

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

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

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


답변

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 예


답변

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


답변

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로 표시됩니다.