psql
사용하는 모든 사람은 less
pager도 사용합니다. 잘 작동하지만 표 형식 데이터에 대한 특별한 지원은 없습니다. 몇 가지 프로젝트를 찾았지만 이 목적에 적합한 프로젝트는 하나도 없었습니다. 그래서 나는 psql
호출기로 사용할 작은 특수 호출기를 작성하기로 결정했습니다.
이 호출기는 다음 명령줄 클라이언트에서도 사용할 수 있습니다.
mysql
sqlite
pgcli
monetdb
Trino (formerly Presto SQL)
usql
sqlcl
(오라클용)nushell
mcview
또는 FoxPro
와 같은 멋진 테마를 사용하는 기능 - http://okbob.blogspot.com/2019/12/pspg-themes-what-you-use-it.html pspg
Debian(Ubuntu) 저장소에서 간단히 설치할 수 있습니다. RedHat(Fedora) 저장소에는 pspg
도 포함되어 있습니다.
# Debian (Ubuntu)
sudo apt-get install pspg
# RedHat (Fedora)
sudo dnf install pspg
기본 구성은 매우 간단합니다. 시스템 환경 변수 PSQL_PAGER
설정하면 됩니다.
export PSQL_PAGER='pspg -X -b'
MS Windows에서의 기본 설치는 지원되지 않지만 pspg
wsl2
내에서 잘 작동합니다. wsl2 환경 내에서의 설치는 기존 Linux 시스템과 동일합니다.
macOS/homebrew에 설치하는 것은 brew install pspg
사용하면 간단합니다.
[pavel@localhost ~]$ pspg --help
pspg is a Unix pager designed for table browsing.
Usage:
pspg [OPTION] [file]
General options:
--about about authors
--help show this help
-V, --version show version
--info show info about libraries and system
--direct-color force direct-color terminal mode
-f, --file=FILE open file
-F, --quit-if-one-screen
quit if content is one screen
--clipboard-app=NUM specify app used by copy to clipboard (1, 2, 3, 4)
--esc-delay=NUM specify escape delay in ms (-1 inf, 0 not used, )
--interactive force interactive mode
--ignore_file_suffix don't try to deduce format from file suffix
--ni not interactive mode (only for csv and query)
--no-watch-file don't watch inotify event of file
--no-mouse don't use own mouse handling
--no-progressive-load don't use progressive data load
--no-sigint-search-reset
without reset searching on sigint (CTRL C)
--no-sleep without waits against flickering
--no_xterm_mouse_mode don't use optional xterm mouse mode
--only-for-tables use std pager when content is not table
--on-sigint-exit exit on sigint(CTRL C or Escape)
--pgcli-fix try to fix some pgcli related issues
--querystream read queries from stream forever
--quit-on-f3 exit on F3 like mc viewers
--rr=ROWNUM rows reserved for specific purposes
--stream read input forever
-X, --reprint-on-exit preserve content after exit
Output format options:
-a, --ascii force ascii
-b, --blackwhite black-white style
-s, --style=N set color style number (0..22)
--bold-labels row, column labels use bold font
--bold-cursor cursor use bold font
--border type of borders (0..2)
--double-header header separator uses double lines
--force-uniborder replace ascii borders by unicode borders
--highlight-odd-rec highlights odd records (when it is supported by style)
--hide-header-line hides header line (between column names and data)
--ignore-short-rows rows with wrong column numbers are ignored
--null=STRING STRING used instead NULL
Searching options
-g --hlite-search, -G --HILITE-SEARCH
don't highlight lines for searches
-i --ignore-case ignore case in searches that do not contain uppercase
-I --IGNORE-CASE ignore case in all searches
Interface options:
-c, --freezecols=N freeze N columns (0..9)
--less-status-bar status bar like less pager
--line-numbers show line number column
--menu-always show top bar menu every time
--no-bars, --no-commandbar, --no-topbar
don't show bottom, top bar or both
--no-cursor row cursor will be hidden
--no-last-row-search don't use the last pattern when starting a new search
--no-scrollbar don't show scrollbar
--no-sound don't use beep when scroll is not possible
--tabular-cursor cursor is visible only when data has table format
--vertical-cursor show vertical column cursor
Input format options:
--csv input stream has csv format
--csv-separator char used as field separator
--csv-header [on/off] specify header line usage
--skip-columns-like="SPACE SEPARATED STRING LIST"
columns with substr in name are ignored
--csv-trim-width=NUM trim value after NUM chars
--csv-trim-rows=NUM trim value after NUM rows
--tsv input stream has tsv format
On exit options:
--on-exit-reset sends reset terminal sequence "33c"
--on-exit-clean sends clean terminal sequence " 33[2J"
--on-exit-erase-line sends erase line terminal sequence "33[2Kr"
--on-exit-sgr0 sends sgr0 terminal sequence " 33[0;10m"
Watch mode options:
-q, --query=QUERY execute query
-w, --watch time the query (or read file) is repeated every time (sec)
Connection options:
-d, --dbname=DBNAME database name
-h, --host=HOSTNAME database server host (default: "local socket")
-p, --port=PORT database server port (default: "5432")
-U, --username=USERNAME database user name
-W, --password force password prompt
Debug options:
--log=FILE log debug info to file
--wait=NUM wait NUM seconds to allow attach from a debugger
pspg는 less pager나 vi 편집기와 많은 주요 명령을 공유합니다.
옵션은 PSPG
환경 변수 내에서 전달될 수도 있습니다. 구성 파일이 먼저 처리됩니다. PSPG
변수의 옵션은 단계 이후에 처리되고 명령줄 옵션은 마지막에 처리됩니다. 하나의 옵션은 여러 번 처리될 수 있으며 마지막 값이 적용됩니다.
이름 | 용법 |
---|---|
PSPG | 명령줄과 동일한 옵션을 보유할 수 있습니다. |
PSPG_CONF | 구성 파일 경로 |
PSPG_HISTORY | 파일 pspg의 readline 기록 파일 경로 |
필드 이름은 관련 명령줄 옵션과 다를 수 있습니다.
ascii_menu = false
bold_labels = false
bold_cursor = false
ignore_case = false
ignore_lower_case = false
no_cursor = false
no_sound = false
no_mouse = false
less_status_bar = false
no_highlight_search = false
no_highlight_lines = false
force_uniborder = false
show_rownum = false
without_commandbar = false
without_topbar = false
vertical_cursor = false
on_sigint_exit = false
no_sigint_search_reset = false
double_header = false
quit_on_f3 = false
pgcli_fix = false
xterm_mouse_mode = true
show_scrollbar = true
menu_always = false
empty_string_is_null = true
last_row_search = true
progressive_load_mode = true
highlight_odd_rec = false
hide_header_line = false
on_exit_reset = false
on_exit_clean = false
on_exit_erase_line = false
on_exit_sgr0 = false
direct_color = false
theme = 16
border_type = 2
default_clipboard_format = 0
clipboard_app = 0
hist_size = 500
esc_delay = -1
암호 | 이름 |
---|---|
0 | 흑백 |
1 | 미드나잇 커맨더 좋아요 |
2 | FoxPro 좋아요 |
3 | Pd메뉴 좋아요 |
4 | 화이트 테마 |
5 | 똥 같은 |
6 | PCF와 같은 |
7 | 녹색 테마 |
8 | 블루 테마 |
9 | 단어 완벽하다 |
10 | 낮은 대비 파란색 테마 |
11 | 어두운 청록색/검정색 모드 |
12 | 역설 같은 |
13 | dBase IV 복고풍 스타일 |
14 | dBase IV 복고풍 스타일(자홍색 라벨) |
15 | 레드 화이트 테마 |
16 | 간단한 테마 |
17 | 솔라라이즈드 다크 테마 |
18 | 태양광 테마 |
19 | Gruvbox 조명 테마 |
20 | 타오 라이트 테마 |
21 | FlatWhite 테마 |
22 | 관계형 파이프 테마 |
23 | 종이 색상 테마 |
http://okbob.blogspot.cz/2017/07/i-hope-so-every-who-uses-psql-uses-less.html을 참조하세요.
테마는 기본 제공 테마를 참조하는 기본 및 메뉴 템플릿을 통해 사용자 정의할 수 있습니다. 사용자 정의 테마 파일은 pspg
구성이 있는 디렉토리에 저장되어야 합니다. 이 파일의 이름은 .pspg_theme_xxx여야 합니다. 사용자 정의 테마는 명령줄 옵션 --custom-style=name
또는 ctheme name
명령으로 선택할 수 있습니다.
사용자 정의 테마 파일의 예(이름: .pspg_theme_mc2
( ctheme mc2
명령으로 활성화 가능)):
template = 1
template_menu = 3
background = black, white
data = black, white
label = black, white, italic, bold
border = #000000, white
footer = lightgray, white
cursor_data = blue, white, italic, bold, dim, reverse
cursor_border = blue, blue , italic, bold, dim, reverse
cursor_label = blue, white, italic, bold, dim, reverse
cursor_footer = blue, white, italic, bold, dim, reverse
cursor_bookmark = red, white, italic, bold, dim, reverse
cross_cursor = white, blue, italic, bold
cross_cursor_border = brightblue, blue
status_bar = black, lightgray
title = black, lightgray
scrollbar_arrows = black, white
scrollbar_background = lightgray, white
scrollbar_slider = white, gray
일부 키는 *
기호로 표시될 수 있습니다. 표시된 키는 홀수 레코드에 사용됩니다.
data* = black, lightgray
label* = black, lightgray, italic, bold
border* = #000000, lightgray
template
및 template_menu
사용자 정의 테마에 지정되지 않은 모든 키에 대한 대체 값을 설정합니다. 특히 template_menu
는 현재 F9 메뉴 모양을 사용자 정의하는 유일한 방법입니다.
열쇠 | 사용자 정의 |
---|---|
background | 배경색 |
data | 데이터(헤더가 없거나 고정된 열) 텍스트 |
border | 테두리 색상 |
label | 라벨(헤더 또는 고정 열) 텍스트 |
row_number | 줄 번호 |
record_number | |
selected_area | |
footer | 결과 바닥글(비표 형식, 예: 행 개수) |
cursor_data | 강조 표시된 데이터(헤더가 없거나 고정된 열) 텍스트 |
cursor_border | 강조표시된 테두리 색상 |
cursor_label | 강조 표시된 레이블(머리글 또는 고정 열) 텍스트 |
cursor_row_number | 강조 표시된 줄 번호 |
cursor_record_number | |
cursor_selected_area | |
cursor_footer | 강조 표시된 결과 바닥글(비표 형식, 예: 행 개수) |
scrollbar_arrows | 스크롤바 위쪽 및 아래쪽 화살표 |
scrollbar_background | 스크롤바 "빈" 배경 |
scrollbar_slider | 배경 위의 스크롤바 슬라이더 |
scrollbar_active_slider | 마우스로 스크롤바 슬라이더를 잡았습니다. |
title | 결과 헤드라인(psql explain 명령) |
status_bar | 상위 쿼리 및 커서 위치 정보 |
prompt_bar | |
info_bar | 정보 텍스트(예: 검색 시 '찾을 수 없음') |
input_bar | 프롬프트 및 텍스트 입력(예: 검색) |
error_bar | |
bookmark | |
bookmark_border | |
cursor_bookmark | |
cross_cursor | 수평 및 수직 커서의 교차점에 강조 표시된 셀 |
cross_cursor_border | 수평 및 수직 커서 교차점의 테두리 |
matched_pattern | 검색결과 일치 텍스트 |
matched_pattern_nohl | |
matched_line | 검색 결과가 포함된 줄 |
matched_line_border | 검색 결과 줄의 테두리 |
matched_pattern_cursor | 강조표시된 검색결과 일치 텍스트 |
matched_line_vertical_cursor | 세로로 강조표시된 검색결과 일치 텍스트 |
matched_line_vertical_cursor_border | 검색 결과가 일치하는 세로로 강조 표시된 셀의 테두리 |
error |
ANSI 색상 Black
, Red
, Green
, Brown
, Blue
, Magenta
, Cyan
, LightGray
, Gray
, BrightRed
, BrightGreen
, Yellow
, BrightBlue
, BrightMagenta
, BrightCyan
, White
및 Default
터미널 에뮬레이터가 구성한 대로 표시됩니다. 또는 16진수 RGB 값 #FF00FF
지정할 수 있습니다.
스타일은 bold
, italic
, underline
, reverse
, standout
, dim
등의 조합입니다.
일부 키의 형식이 올바르지 않으면 이 행이 무시됩니다. 사용자 정의 테마를 디버깅하려면 --log
옵션을 사용하여 pspg
시작하는 것이 좋습니다. 손상된 정의에 대한 정보는 로그 파일에 저장됩니다.
키 | 명령 |
---|---|
0 , 1 , 2 , 3 , .., 9 | 처음 N개 열 고정 |
KEY_UP , k | 한 줄 뒤로 탐색 |
KEY_DOWN , j | 한 줄 앞으로 이동 |
KEY_LEFT , 시간 | 왼쪽으로 스크롤 |
KEY_RIGHT , l | 오른쪽으로 스크롤 |
Ctrl + KEY_LEFT | 한 글자 왼쪽으로 스크롤 |
Ctrl + KEY_RIGHT | 한 글자 오른쪽으로 스크롤 |
Shift + KEY_LEFT | 한 열 왼쪽으로 스크롤 |
Shift + KEY_RIGHT | 한 열 오른쪽으로 스크롤 |
Ctrl + 홈 , g | 파일의 시작 부분으로 이동 |
Ctrl + 끝 , G | 파일의 끝으로 이동 |
Alt + l | 줄번호로 가세요 |
시간 | 현재 창의 첫 번째 줄로 이동 |
중 | 현재 창의 절반으로 이동 |
엘 | 현재 창의 끝으로 이동 |
PPAGE , Ctrl + b | 한 창 뒤로 |
NPAGE , Ctrl + f , 스페이스바 | 한 창 앞으로 |
홈 , ^ | 줄의 시작, 첫 번째 열로 이동 |
끝 , $ | 줄 끝, 마지막 열로 이동 |
Ctrl + e | 창을 아래로 스크롤 |
Ctrl + Y | 창을 위로 스크롤 |
Ctrl + D | 반 창 앞으로 |
Ctrl + 유 | 반창 뒤로 |
에스 | 콘텐츠를 파일에 저장 |
/ | 다음 발생으로 이동하는 패턴 검색 |
? | 이전 발생으로 이동하는 패턴 검색 |
N | 다음 경기를 위해 |
N | 반대 방향으로 다음 일치를 위해 |
기음 | 열 검색 |
Alt + / | 선택한 영역 내부의 패턴 검색 |
Alt + ? | 선택한 영역 내부의 패턴을 뒤로 검색합니다. |
Alt + C | 스위치(켜기, 끄기) 그리기 선 커서 |
Alt + m | 자신의 마우스 핸들러를 켜거나 끕니다. |
Alt + N | 스위치(켜기, 끄기) 그리기 선 번호 |
Alt + v , 열 헤더를 두 번 클릭 | 도면 열 커서 스위치(켜기, 끄기) |
마우스 버튼 휠 | 수직으로 스크롤 |
Alt + 마우스 버튼 휠 | 가로로 스크롤 |
F9 | 메뉴 표시 |
q , F10 , Esc 0 | 그만두다 |
Alt + q | 원시(형식화되지 않은) 콘텐츠를 종료하고 인쇄합니다. |
Alt + k , Alt + 더블클릭 | 북마크 전환 |
Alt + J | 다음 북마크로 이동 |
Alt + i | 이전 북마크로 이동 |
Alt + o | 북마크 플러시 |
에이 | 오름차순 정렬 |
디 | 하위 항목 정렬 |
유 | 정렬되지 않음(원본 순서로 정렬됨) |
공간 | 시계 모드에서 중지/계속 |
아르 자형 | 화면 다시 그리기 및 입력 파일 새로 고침 |
인 | 행, 열 또는 셀을 기본 대상으로 내보내기 |
쉬프트 + 커서... | 범위 정의 |
F3 | 선택 행의 시작/끝 |
쉬프트 + F3 | 선택 블록의 시작/끝 |
Ctrl + 마우스 끌기 | 행 선택을 정의하고, 열 머리글에서 열 선택을 정의합니다. |
Ctrl + O | 기본 화면을 표시하세요. 호출기로 다시 돌아가려면 아무 키나 누르세요. |
% , Ctrl + a | 모두 선택 |
명령 | 설명 |
---|---|
N | 줄번호로 가세요 |
+N | N 줄 앞으로 이동 |
-N | N줄 뒤로 이동 |
N+ | 줄번호로 가세요 |
N- | 끝에서 줄 번호로 이동 |
theme N | 테마 번호 설정 |
copy [all|selected] [nullstr "str"] [csv|tsv|insert|text|pipesep|sqlvalues] | 데이터를 클립보드에 복사 |
save [all|selected] [nullstr "str"] [csv|tsv|insert|text|pipesep|sqlvalues] | 데이터를 클립보드에 복사 |
order [N|column name] | 열별로 정렬 |
orderd [N|column name] | desc 열별로 정렬 |
sort [N|column name] | 열별로 정렬 |
sortd [N|column name] | desc 열별로 정렬 |
dsort [N|column name] | desc 열 기준 정렬(별칭) |
rsort [N|column name] | desc 열 기준 정렬(별칭) |
asc [N|column name] | 열 기준 정렬(별칭) |
desc [N|column name] | desc 열 기준 정렬(별칭) |
search [back] [selected] [column name] [string|"string"] | 데이터에서 문자열 검색 |
이름이 파이프 기호로 시작하는 경우 출력은 모든 명령으로 리디렉션될 수 있습니다.
copy csv | less
호출기는 q , F10 또는 Esc 0 키를 눌러 종료할 수 있습니다. --on-sigint-exit
옵션을 사용하면 Ctrl + c 또는 Esc Esc 키를 눌러 호출기가 닫힙니다.
pspg는 Alt + 키 조합 대신 Esc 키 시퀀스를 사용할 수 있는 가능성을 지원합니다. Esc 와 키를 누르는 간격은 esc-delay
옵션 또는 구성 옵션 esc_delay
에 의해 지정된 간격으로 제한됩니다. 이것은 ms 단위의 최대 지연 시간입니다. 이 간격 후에는 Esc를 한 번 누르는 것이 Escape
로 해석됩니다. -1은 무제한을 의미하고, 0은 이 기능을 비활성화합니다.
열 검색은 매번 대소문자를 구분하지 않습니다. 검색된 열은 수직 커서로 표시됩니다. 현재 검색 패턴이 빈 문자열인 경우 비어 있지 않은 마지막 문자열 검색 패턴이 사용됩니다. 검색은 표시된 세로 열 이후 또는 고정되지 않은 첫 번째 표시 열(일부 가로 스크롤 후) 또는 첫 번째 열에서 시작됩니다. 마지막 열 이후 처음부터 다시 검색이 시작됩니다.
클립보드를 지원하려면 클립보드 애플리케이션을 설치해야 합니다: 1. wl-clipboard(Wayland), 2. xclip(xwindows), 3. pbcopy(MacOS) 또는 4.clip.exe(WSL2).
pspg
매번 유니코드 기호 '∅'를 NULL로 변환하려고 시도합니다. pset null ...
로 특수 설정을 사용하지 않으면 psql
NULL 대신 빈 문자열을 표시합니다. pspg
이 경우에 대해 특별한 감지(내보내기 루틴에서)를 수행하지 않습니다. 메뉴 항목 Empty string is NULL
확인하고 활성화 또는 비활성화해야 합니다.
pspg
에는 클립보드 응용 프로그램을 자동으로 감지하는 기능이 있습니다. 불행하게도 이 감지는 동일한 경우에는 작동하지 않습니다. --clipboard-app
옵션에 번호(1,2,3,4)를 지정하여 애플리케이션을 지정할 수 있습니다.
형식이 차이를 만듭니다! pspg는 기본적으로 쉼표 구분 기호를 사용하고 초기 및 후행 공백을 잘라내는 CSV 형식으로 레코드를 복사합니다. 쿼리 출력을 정확하게 복사하려면 "서식 있는 텍스트"를 사용하거나 사용 가능한 다른 옵션 중 하나를 선택하세요.
V: [d/d d..d]
- 수직 커서: (열 번호)/(열) (문자 위치 from) .. (문자 위치 to)FC: d
- 고정된 열 길이(문자)C: d..d/d
- 고정되지 않은 문자 단위의 표시 데이터(..부터)/(전체)L:[d + dd/d]
- 행(표시되는 첫 번째 행 수) + (표시된 행 수), (현재 행)/(행)d%
- 이미 표시된 데이터의 백분율 밀러 http://johnkerl.org/miller/doc/index.html과 잘 작동합니다.
mlr --icsv --opprint --barred put '' obce.csv | pspg --force-uniborder
새 버전에는 csv 지원이 통합되었습니다. --csv
옵션을 사용하세요.
mc
에 통합될 수 있습니다.
/etc/mc/mc.ext
의 파일을 ~/.config/mc directory
로 복사합니다.##csv 정규식/.csv 보기=pspg -f %f --csv
mc
다시 시작 pspg
사용할 때 스크롤이 일시적으로 중단되는 현상이 보고되었습니다. 이 경우 --no-sleep
옵션을 사용하십시오. konsole(KDE 터미널) 내부에서 (스크롤바를 통해) 느린 스크롤이 보입니다. --no-sleep
옵션도 도움이 됩니다. 쿼리 결과는 n초마다 새로 고쳐질 수 있습니다. pspg
커서 행, 가능한 수직 커서, 가능한 순서를 기억합니다. 새로 고침은 스페이스 키를 눌러 일시 중지해야 합니다. 이 키를 반복해서 누르면 다시 새로 고침이 가능해집니다.
pspg
사용 가능한 경우 inotify API를 사용하며 입력 파일이 변경되면 pspg
즉시 파일을 다시 읽습니다. 이 동작은 --no-watch-file
옵션으로 비활성화하거나 --watch
옵션으로 시청 시간을 지정하여 비활성화할 수 있습니다.
pspg
파이프, 명명된 파이프 또는 파일( --stream
옵션 사용)에서 테이블 형식 데이터의 연속 스트림을 읽거나 파이프 또는 파일( --querystream
옵션 사용)에서 쿼리 스트림을 읽을 수 있습니다. 스트림 모드에서, pspg
테이블 사이의 구분자로 빈 줄을 사용하기 때문에 테이블 형식의 데이터만 처리할 수 있습니다.
쿼리 스트림 모드는 char GS(그룹 구분 기호 - 구분된 줄의 0x1D)로 구분된 일련의 SQL 문입니다.
pavel@localhost ~]$ cat < /dev/pts/3 > ~/pipe 10개를 선택하세요 ^] 20개를 선택하세요 ^] 선택하다 * ~에서 pg_class ^]
프로필에 다음을 추가해야 합니다:
#Postgres 10 이상용 수출 페이저="pspg" #postgres 11 이상용 PSQL_PAGER="pspg" 내보내기 #또는 "setenv PAGER pspg"를 .psqlrc로
그리고 .psqlrc
세트 조용함 1 pset 라인스타일 유니코드 pset 테두리 2 pset 널 ∅ 설정 해제 QUIET
몇 가지 가능한 구성:
-- :x 및 :xx 명령을 사용하여 호출기 전환 set x '\setenv PAGER less' set xx '\setenv PAGER 'pspg -bX --no-mouse'' :더블 엑스
LC_CTYPE
정확해야 합니다. 주로 유니코드 테두리를 사용하는 경우입니다. ncurses는 이 변수를 올바르게 설정하지 않으면 유니코드 테두리( psql
에 의해 생성됨)를 표시하지 않습니다. 'C.UTF8' 값을 확인할 수 있습니다.
--only-for-tables
옵션을 사용하면
PAGER
pspg
로 설정하고 PSQL_PAGER
less
또는로 설정하십시오.PAGER
less
로 설정하고 PSQL_PAGER
pspg
로 설정합니다. MariaDB [sakila]> 호출기 pspg -s 14 -X --force-uniborder --quit-if-one-screen PAGER가 'pspg -s 14 -X --force-uniborder --quit-if-one-screen'으로 설정됨 MariaDB [사킬라]> 지금 선택(); MariaDB [sakila]> nicer_but_slower_film_list 제한 100에서 *를 선택합니다.
SQLite 기본 클라이언트는 올바른 형식의 출력을 생성하지 않지만 강제로 CSV 형식을 생성할 수 있습니다. 이 형식은 pspg
에서 잘 읽을 수 있습니다.
sqlite3 -csv -header testdb.db 'select * from foo2' | pspg --csv --csv-header=on --double-header
pgcli에는 다음 구성 옵션( ~/.config/pgcli/config
)이 필요합니다.
pager = /usr/bin/pspg --csv --rr=2 --quit-if-one-screen --ignore-case --csv-header on --pgcli-fix
table_format = csv
이전 버전의 pgcli는 표 형식의 출력이 매우 느렸습니다. 해결 방법은 csv 형식을 사용하는 것이었습니다. 성능 문제가 해결된 현재 버전에서는 이 작업이 필요하지 않습니다. --pgcli-fix
옵션은 pgcli
에 의해 생성된 부분적으로 깨진 csv 형식 가져오기를 수정했습니다. 최신 버전의 pgcli
에는 csv 형식이 필요하지 않으며 --pgcli-fix
옵션도 필요하지 않습니다.
pager = /usr/bin/pspg --rr=2 --quit-if-one-screen --ignore-case
sqlcl
현재 호출기 옵션을 직접 지원하지 않으므로 qsh와 같은 도구를 사용하여 이 문제를 해결하거나 이 저장소의 pspg.sql 스크립트를 사용할 수 있습니다.
스크립트를 사용하려면 아래와 같이 sqlcl
시작하십시오(현재 tty의 세부 정보를 전달하는 것이 중요합니다).
$ TTY=$(tty) sqlcl system/system @/path/to/pspg.sql
이제 다음과 같이 pspg
로 전송된 쿼리 결과를 얻을 수 있습니다.
SQL> pspg select * from user_tables;
pspg
기본 table_mode
: rounded
및 table_mode
: heavy
지원합니다.
csv로의 변환도 사용할 수 있습니다.
sys | get cpu | to csv | pspg --csv
참고: footer_mode
비활성화해야 합니다.
간단한 구성:
$env.config.footer_mode = never
$env.config.table.header_on_separator = false
$env.config.ls.clickable_links = false
$env.config.table.mode = rounded
pspg는 터미널과 ncurses가 너무 오래되지 않은 경우 xterm 마우스 모드 1002를 사용해 봅니다. 사용에 문제가 있는 경우(마우스 버튼을 눌렀을 때 마우스로 움직일 때 원하지 않는 시각적 인공물 발생) 1. 문제를 보고하십시오(로그 파일을 첨부하십시오). 2. --no-xterm-mouse-mode
옵션을 사용하십시오. --no-xterm-mouse-mode
와 pspg
이 모드를 활성화하려고 시도하지 않습니다.
내 Fedora에서 이 터미널은 트루 컬러 테마를 올바르게 표시하지 않습니다. 기본적인 문제는 기본 TERM
설정, 즉 xterm-256color
에 있습니다. 안타깝게도 konsole
터미널은 xterm
과 완전히 호환되지 않으며 색상 변경을 허용하지 않습니다. --direct-color
옵션을 사용하거나 TERM=xterm-direct
설정하여 직접 색상을 강제 적용할 수 있습니다. 두 번째 옵션은 TERM
변수를 konsole-256color
로 더 정확하게 설정하는 것입니다. 이 경우 pspg
실제 RGB 색상을 지원되는 256 색상으로 매핑합니다.
일부 링커 문제는 다음을 통해 해결할 수 있습니다.
나는 변했다 gcc -lncursesw pager.c -o pspg -ggdb 에게 gcc pager.c -o pspg -ggdb -lncursesw
pspg
Postgres 클라이언트로 사용하려면 configure --with-postgresql=yes
실행해야 합니다. 자체 Postgres 빌드가 있는 Fedora에서는 openssl-devel
패키지를 설치해야 하고 export PKG_CONFIG_PATH="/usr/local/pgsql/master/lib/pkgconfig/"
설정해야 했습니다.
FreeBsd에서는 make
대신 gmake
사용해야 합니다.
소스에서 코드를 컴파일하는 경우 ./configure를 먼저 실행하세요. 때로는 ./autogen.sh가 먼저
UTF-8 문자를 표시하려면 pspg
ncursesw
라이브러리와 연결해야 합니다. ncursesw
라이브러리를 사용하면 UTF-8 문자가 잘못 표시됩니다. 잘못된 로케일 설정으로 인해 깨진 문자도 볼 수 있습니다.
pspg --version
으로 넓은 문자 지원을 확인할 수 있습니다. ncurses with wide char support
예상됩니다. --with-ncursesw
옵션을 사용하여 configure
다시 실행하십시오. 이 명령이 실패하면 ncursesw 라이브러리용 개발 패키지가 설치되어 있는지 확인하십시오.
# brew install pspg
brew
없이 pspg
쉽게 컴파일할 수 있지만 gnu readline
라이브러리가 필요합니다. MacOS는 기본적으로 libedit를 통해 에뮬레이트된 readline을 사용하지만 pspg
전체 gnu readline 라이브러리가 필요합니다.
LDFLAGS="-L/usr/local/opt/readline/lib" CPPFLAGS="-I/usr/local/opt/readline/include" ./configure
LDFLAGS="-L/usr/local/opt/readline/lib" CPPFLAGS="-I/usr/local/opt/readline/include" make
# apt-cache search pspg
# apt-get install pspg
# dnf install pspg
pspg는 커뮤니티 저장소 https://yum.postgresql.org/packages.php에서 사용할 수 있습니다.
# apk add pspg
# emerge -av dev-db/pspg
Arch 사용자 저장소에는 두 가지 버전이 포함되어 있습니다.
master
브랜치를 추적합니다. pspg를 설치하려면 원하는 AUR 도우미나 git 및 makepkg
사용하세요.
# pkg install pspg
# pkg_add pspg
그것에 대해 더 알아보기
# port install pspg
pspg
wsl2를 사용하여 MS Windows에서 간단히 사용할 수 있습니다. 테스트해봤는데 문제없이 잘 작동됩니다.
터미널에서 wsl --install -d Ubuntu-22.04
실행합니다.
터미널에서 Ubuntu 세션 열기
sudo apt-get update
sudo apt-get install pspg
sudo apt-get install postgresql postgresql-contrib
# set password for user postgres
sudo passwd postgres
su - postgres
psql postgres
>> create role pavel login;
q
exit
touch ~/.psqlrc
mcedit .psqlrc
pset linestyle unicode
pset border 2
setenv PSQL_PAGER 'pspg -b -X'
# press F2 and F10
psql postgres
Ubuntu(Debian)에서의 설치 및 작업과 별 차이가 없습니다.
pspg
아직 MS Windows로 포팅되지 않았습니다. ncurses 및 올바르게(완전히) 구현된 함수 newterm
에 대한 종속성이 있습니다( pdcurses
Unix 플랫폼에서만 이 작업을 수행합니다). 아마도 WSL2에서 작동할 수 있을 것입니다(테스트하지는 않았습니다). 대안은 일부 MS Win 환경으로 포팅된 less
양의 호출기를 사용하는 것입니다. less
termcap
에 의존하며, pspg
보다 이식성이 조금 더 좋습니다( termcal
ncurses의 낮은 계층입니다). less
고정 행을 지원하며 --chop-long-lines
옵션을 사용하거나 -S
만 pspg
의 호출기로 사용할 수 있습니다.
export PSQL_PAGER="less --chop-long-lines --header 1"
성공적인 컴파일을 위해 수동 코드 변경이 필요한 몇 가지 문제가 있습니다. pspg
성공적으로 테스트했지만 pspg
ncursesw 라이브러리와 연결되었지만 utf8 인코딩 지원이 완전히 올바르게 작동하지 않았습니다. 아마도 libc
라이브러리의 일부 문제 때문일 것입니다. 3바이트로 인코딩된 문자에 문제가 있습니다. 유니코드 테두리, .. 2바이트 유니코드 문자는 잘 표시되어야 합니다.
일반적인 액센트 문자와 함께 pspg
사용할 수 있지만 유니코드 테두리는 사용하면 안 됩니다. 특수 테두리 문자(ncurses 기술 사용)로 ASCII 테두리를 대체하면 잘 작동합니다. Options|Force unicode borders
옵션을 살펴보세요.
Solaris make
조건문을 지원하지 않습니다. 제거해야 합니다. 따라서 Makefile
에서 지원되지 않는 기능( ifdef
, endif
)을 제거하고 -include
먼저 include
로 바꾸십시오.
configure
실행한 후 config.make
에서 termcap
라이브러리에 대한 링크를 제거합니다. readline
automake 스크립트에 의해 생성된 쓰레기입니다. ncurses
라이브러리와 결합하면 일부 연결 문제가 발생합니다.
export CURSES_CFLAGS="-I/usr/include/ncurses/"
export PANEL_LIBS="-lpanelw"
./configure
export CFLAGS="-m64 -I/opt/csw/include"
export LDFLAGS="-L/opt/csw/lib/64 -R/opt/csw/lib/64"
export PKG_CONFIG_PATH="/opt/csw/lib/64/pkgconfig"
./configure
일부 열 형식으로 데이터를 저장합니다(이제 데이터는 행 배열처럼 저장됩니다). 이 변경을 통해 열 숨기기, 너비 변경, 열에 대한 순환 반복, 열 순서 변경, 열 표시 및 선택한 열(선택한 행)만 내보내기 등 열에 대한 작업이 가능해졌습니다.
좀 더 스마트한 구조로 인쇄 문서를 ncurses 창으로 직접 교체하세요. 내부적으로는 복잡한 동적 레이아웃을 지원하기 위해 많은 점검과 수정이 이루어졌습니다. 가능한 뷰는 첫 번째 행, 마지막 행, 현재 행을 기억해야 합니다. 이제 이러한 데이터는 전역 변수나 DataDesc 및 ScrDesc 구조에 있습니다.
이 프로젝트는 st_menu 라이브러리를 사용합니다 - ncurses에 대한 CUA 메뉴바 및 풀다운 메뉴 구현 https://github.com/okbob/ncurses-st-menu
마음에 드셨다면 고국에서 제 주소로 엽서를 보내주세요.
Pavel Stehule
Skalice 12
256 01 Benesov u Prahy
Czech Republic
질문, 의견, 버그 리포트, 패치는 메일 주소 [email protected]으로 보내주세요.