ทุกคนที่ใช้ psql
ก็ใช้เพจเจอร์ less
เช่นกัน ซึ่งแม้ว่าจะทำงานได้ดี แต่ก็ไม่มีการสนับสนุนพิเศษสำหรับข้อมูลแบบตาราง ฉันพบบางโครงการ แต่ไม่มีโครงการใดที่ดีพอสำหรับจุดประสงค์นี้ ดังนั้นฉันจึงตัดสินใจเขียนเพจเจอร์พิเศษขนาดเล็กเพื่อใช้เป็นเพจเจอร์ 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 แบ่งปันคำสั่งคีย์จำนวนมากกับเพจเจอร์น้อยหรือเอดิเตอร์ vi
ตัวเลือกสามารถส่งผ่านภายในตัวแปรสภาพแวดล้อม PSPG
ได้ ไฟล์การกำหนดค่าได้รับการประมวลผลก่อน ตัวเลือกจากตัวแปร PSPG
จะถูกประมวลผลหลังจากนั้น และตัวเลือกบรรทัดคำสั่งจะถูกประมวลผลในตอนท้าย หนึ่งตัวเลือกสามารถประมวลผลได้หลายครั้ง ค่าสุดท้ายจะชนะ
ชื่อ | การใช้งาน |
---|---|
PSPG | สามารถเก็บตัวเลือกเดียวกันได้เช่นบรรทัดคำสั่ง |
PSPG_CONF | เส้นทางไปยังไฟล์การกำหนดค่า |
PSPG_HISTORY | เส้นทางไปยังไฟล์ไฟล์ประวัติ readline ของ pspg |
ชื่อฟิลด์อาจแตกต่างจากตัวเลือกบรรทัดคำสั่งที่เกี่ยวข้อง:
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 | Pdmenu เช่น |
4 | ธีมสีขาว |
5 | โคตรชอบเลย |
6 | PCFand ชอบ |
7 | ธีมสีเขียว |
8 | ธีมสีน้ำเงิน |
9 | คำที่สมบูรณ์แบบเช่น |
10 | ธีมสีน้ำเงินคอนทราสต์ต่ำ |
11 | โหมดสีฟ้าเข้ม/สีดำ |
12 | พาราด็อกซ์เหมือน |
13 | สไตล์ย้อนยุค dBase IV |
14 | สไตล์ย้อนยุค dBase IV (ฉลากสีม่วงแดง) |
15 | ธีมขาวแดง |
16 | ธีมเรียบง่าย |
17 | ธีมมืดโซลาไรซ์ |
18 | ธีมแสงแสงอาทิตย์ |
19 | ธีมแสง Guvbox |
20 | ธีมเต๋าไลท์ |
21 | ธีมสีขาวเรียบๆ |
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 อธิบายคำสั่ง) |
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
, สีฟ้า , LightGray
Cyan
อ่อน , Gray
, BrightRed
, BrightGreen
, Yellow
, BrightBlue
, BrightMagenta
, BrightCyan
, White
และ Default
จะแสดงเมื่อโปรแกรมจำลองเทอร์มินัลของคุณกำหนดค่า หรือคุณสามารถระบุค่า RGB ฐานสิบหก #FF00FF
ได้
ลักษณะคือการผสมผสานระหว่าง: bold
italic
underline
reverse
โดด standout
dim
หากรูปแบบของคีย์บางคีย์ไม่ถูกต้อง แถวนี้จะถูกละเว้น สำหรับการดีบักธีมที่กำหนดเองนั้นควรเริ่ม pspg
ด้วยตัวเลือก --log
ข้อมูลเกี่ยวกับคำจำกัดความที่ใช้งานไม่ได้จะถูกจัดเก็บไว้ในไฟล์บันทึก
คีย์ | สั่งการ |
---|---|
0 , 1 , 2 , 3 , .., 9 | ตรึงคอลัมน์ N แรก |
KEY_UP , k | ย้อนกลับหนึ่งบรรทัด |
KEY_DOWN เจ | นำทางไปข้างหน้าหนึ่งบรรทัด |
KEY_LEFT , ชม | เลื่อนไปทางซ้าย |
KEY_RIGHT , ล | เลื่อนไปทางขวา |
Ctrl + KEY_LEFT | เลื่อนไปทางซ้ายหนึ่งอักขระ |
Ctrl + KEY_RIGHT | เลื่อนไปทางขวาหนึ่งอักขระ |
Shift + KEY_LEFT | เลื่อนไปทางซ้ายหนึ่งคอลัมน์ |
Shift + KEY_RIGHT | เลื่อนไปทางขวาหนึ่งคอลัมน์ |
Ctrl + หน้าแรก ก | ไปที่จุดเริ่มต้นของไฟล์ |
Ctrl + สิ้นสุด , G | ไปที่จุดสิ้นสุดของไฟล์ |
Alt + ล | ไปที่หมายเลขบรรทัด |
ชม | ไปที่บรรทัดแรกของหน้าต่างปัจจุบัน |
ม | ไปที่ครึ่งหนึ่งของหน้าต่างปัจจุบัน |
ล | ไปที่จุดสิ้นสุดของหน้าต่างปัจจุบัน |
หน้า , Ctrl + b | ถอยหลังหนึ่งหน้าต่าง |
NPAGE , Ctrl + f , ช่องว่าง | ส่งต่อหนึ่งหน้าต่าง |
หน้าแรก , ^ | ไปที่จุดเริ่มต้นของบรรทัดคอลัมน์แรก |
จบ , $ | ไปที่ท้ายบรรทัด คอลัมน์สุดท้าย |
Ctrl + อี | เลื่อนหน้าต่างลง |
Ctrl + y | เลื่อนหน้าต่างขึ้น |
Ctrl + d | ไปข้างหน้าครึ่งหน้าต่าง |
Ctrl + คุณ | ถอยหลังครึ่งหน้าต่าง |
ส | บันทึกเนื้อหาลงในไฟล์ |
- | ค้นหารูปแบบที่จะพาคุณไปสู่เหตุการณ์ต่อไป |
- | ค้นหารูปแบบที่จะพาคุณไปสู่เหตุการณ์ก่อนหน้า |
n | สำหรับนัดต่อไป |
เอ็น | เพื่อการแข่งขันครั้งต่อไปในทิศทางตรงกันข้าม |
ค | ค้นหาคอลัมน์ |
อัลท์ + / | ค้นหารูปแบบภายในพื้นที่ที่เลือก |
Alt + ? | ค้นหาย้อนหลังสำหรับรูปแบบภายในพื้นที่ที่เลือก |
Alt + ค | สวิตช์ (เปิด, ปิด) เคอร์เซอร์วาดเส้น |
Alt + ม | สวิตช์ (เปิด, ปิด) ตัวจัดการเมาส์ของตัวเอง |
Alt + n | สวิตซ์ (เปิด, ปิด) การวาดเลขเส้น |
Alt + v ดับเบิลคลิก ที่ส่วนหัวของคอลัมน์ | สวิตช์ (เปิด, ปิด) เคอร์เซอร์คอลัมน์การวาด |
ล้อปุ่มเมาส์ | เลื่อนแนวตั้ง |
ล้อปุ่ม Alt + เมาส์ | เลื่อนแนวนอน |
F9 | แสดงเมนู |
q , F10 , Esc 0 | ล้มเลิก |
Alt + คิว | ออกและพิมพ์เนื้อหาดิบ (ไม่ได้ฟอร์แมต) |
Alt + k , Alt + ดับเบิลคลิก | สลับบุ๊กมาร์ก |
Alt + เจ | ไปที่บุ๊กมาร์กถัดไป |
Alt + ฉัน | ไปที่บุ๊กมาร์กก่อนหน้า |
Alt + โอ | ล้างบุ๊กมาร์ก |
ก | เรียงลำดับขึ้นไป |
ง | เรียงลำดับจากมากไปน้อย |
คุณ | ไม่เรียงลำดับ (เรียงลำดับตามลำดับต้นทาง) |
ช่องว่าง | หยุด/ดำเนินการต่อในโหมดนาฬิกา |
ร | ทาสีหน้าจอใหม่และรีเฟรชไฟล์อินพุต |
อิน | ส่งออกแถว คอลัมน์ หรือเซลล์ไปยังเป้าหมายเริ่มต้น |
shift + เคอร์เซอร์... | กำหนดช่วง |
F3 | เริ่มต้น/สิ้นสุดแถวการเลือก |
กะ + F3 | เริ่มต้น/สิ้นสุดของบล็อกการเลือก |
Ctrl + ลากเมาส์ | กำหนดการเลือกแถว บนส่วนหัวของคอลัมน์ กำหนดการเลือกคอลัมน์ |
Ctrl + โอ | แสดงหน้าจอหลัก กดปุ่มใดก็ได้เพื่อกลับสู่เพจเจอร์อีกครั้ง |
% , Ctrl + ก | เลือกทั้งหมด |
สั่งการ | คำอธิบาย |
---|---|
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] | เรียงตามคอลัมน์ |
sort [N|column name] | จัดเรียงตามคอลัมน์ |
sortd [N|column name] | เรียงตามคอลัมน์ |
dsort [N|column name] | เรียงลำดับตามคอลัมน์ (นามแฝง) |
rsort [N|column name] | เรียงลำดับตามคอลัมน์ (นามแฝง) |
asc [N|column name] | จัดเรียงตามคอลัมน์ (นามแฝง) |
desc [N|column name] | เรียงลำดับตามคอลัมน์ (นามแฝง) |
search [back] [selected] [column name] [string|"string"] | สตริงการค้นหาในข้อมูล |
เอาต์พุตสามารถเปลี่ยนเส้นทางไปยังคำสั่งใด ๆ เมื่อชื่อขึ้นต้นด้วยสัญลักษณ์ไปป์:
copy csv | less
เพจเจอร์สามารถสิ้นสุดได้โดยการกดปุ่ม q หรือ F10 หรือ Esc 0 ด้วยตัวเลือก --on-sigint-exit
เพจเจอร์จะถูกปิดโดยการกดปุ่ม Ctrl + c หรือ Esc Esc
pspg รองรับความเป็นไปได้ที่จะใช้ลำดับของคีย์ Esc โดย key แทนการรวมกันของ Alt + key ช่วงเวลาระหว่างการกด Esc และ คีย์ ถูกจำกัดโดยช่วงเวลาที่ระบุโดยตัวเลือก esc-delay
หรือโดยตัวเลือกของการกำหนดค่า esc_delay
นี่คือเวลาหน่วงสูงสุดในหน่วยมิลลิวินาที หลังจากช่วงเวลานี้ การกด 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
มีการตรวจจับแอปพลิเคชันคลิปบอร์ดโดยอัตโนมัติ น่าเสียดายที่การตรวจจับนี้ไม่ควรทำงานในกรณีเดียวกัน คุณสามารถระบุแอปพลิเคชันโดยระบุหมายเลข (1,2,3,4) ถึงตัวเลือก --clipboard-app
รูปแบบสร้างความแตกต่าง! pspg คัดลอกบันทึกในรูปแบบ CSV ตามค่าเริ่มต้น ซึ่งใช้ตัวคั่นด้วยเครื่องหมายจุลภาคและ ตัดแต่งช่องว่างเริ่มต้นและต่อท้าย ใช้ "ข้อความที่จัดรูปแบบ" เพื่อคัดลอกเอาต์พุตแบบสอบถามทุกประการ หรือเลือกตัวเลือกอื่นที่มีอยู่
V: [d/d d..d]
- เคอร์เซอร์แนวตั้ง: (หมายเลขคอลัมน์)/(คอลัมน์) (ตำแหน่งอักขระจาก) .. (ตำแหน่งอักขระถึง)FC: d
- ตรึงความยาวคอลัมน์เป็นตัวอักษรC: d..d/d
- ข้อมูลที่มองเห็นได้แบบไม่ตรึงเป็นตัวอักษร (จาก .. ถึง)/(ทั้งหมด)L:[d + dd/d]
- เส้น (จำนวนบรรทัดแรกที่มองเห็น) + (จำนวนบรรทัดที่แสดง), (บรรทัดปัจจุบัน)/(บรรทัด)d%
- เปอร์เซ็นต์ของข้อมูลที่แสดงแล้ว มันทำงานได้ดีกับ miller http://johnkerl.org/miller/doc/index.html
mlr --icsv --opprint --barred ใส่ '' obce.csv | pspg --force-uniborder
เวอร์ชันใหม่มีการรองรับ csv แบบรวม - เพียงใช้ตัวเลือก --csv
สามารถรวมเข้ากับ mc
ได้
/etc/mc/mc.ext
ไปยัง ~/.config/mc directory
ของคุณ##ซีเอสวี regex/.csv ดู=pspg -f %f --csv
mc
pspg
บน Cygwin จะมีการรายงานการหยุดการเลื่อนชั่วคราวชั่วคราว ในกรณีนี้ โปรดใช้ตัวเลือก --no-sleep
ฉันเห็นการเลื่อนช้า (ผ่านแถบเลื่อน) ภายใน konsole (เทอร์มินัล KDE) ตัวเลือก --no-sleep
ก็ช่วยได้เช่นกัน ผลลัพธ์ของแบบสอบถามสามารถรีเฟรชได้ทุก ๆ n วินาที pspg
จำแถวเคอร์เซอร์, เคอร์เซอร์แนวตั้งที่เป็นไปได้, การเรียงลำดับที่เป็นไปได้ การรีเฟรชควรหยุดชั่วคราวโดยกดปุ่ม เว้นวรรค การกดปุ่มนี้ซ้ำๆ จะทำให้รีเฟรชได้อีกครั้ง
pspg
ใช้ inotify API เมื่อพร้อมใช้งาน และเมื่อไฟล์อินพุตมีการเปลี่ยนแปลง จากนั้น pspg
จะอ่านไฟล์ซ้ำทันที ลักษณะการทำงานนี้สามารถปิดใช้งานได้โดยตัวเลือก --no-watch-file
หรือตามข้อกำหนดเวลาในการดูตามตัวเลือก --watch
pspg
สามารถอ่านสตรีมข้อมูลแบบตารางอย่างต่อเนื่องจากไพพ์ ชื่อไพพ์ หรือจากไฟล์ (พร้อมตัวเลือก --stream
หรือสามารถอ่านสตรีมของการสืบค้นจากไพพ์หรือจากไฟล์ (พร้อมตัวเลือก --querystream
) ในโหมดสตรีม สามารถประมวลผลได้เฉพาะข้อมูลในรูปแบบตารางเท่านั้น เนื่องจาก pspg
ใช้บรรทัดว่างเป็นตัวคั่นระหว่างตาราง
โหมดสตรีมแบบสอบถามคือลำดับของคำสั่ง SQL ที่คั่นด้วยอักขระ GS (ตัวแยกกลุ่ม - 0x1D บนบรรทัดที่แยกจากกัน
pavel@localhost ~]$ cat < /dev/pts/3 > ~/pipe เลือก 10 - เลือก 20 - เลือก * จาก pg_class -
คุณควรเพิ่มในโปรไฟล์ของคุณ:
#สำหรับ Postgres 10 และเก่ากว่า ส่งออก PAGER = "pspg" #สำหรับ postgres 11 และใหม่กว่า ส่งออก PSQL_PAGER = "pspg" #หรือ "setenv PAGER pspg" เป็น .psqlrc
และ .psqlrc
set เงียบ 1 pset ยูนิโค้ดสไตล์เส้น pset เส้นขอบ 2 pset null ∅ unset เงียบ
การกำหนดค่าบางอย่างที่เป็นไปได้:
-- สลับเพจเจอร์ด้วยคำสั่ง :x และ :xx set x '\setenv PAGER น้อยลง' set xx '\setenv PAGER 'pspg -bX --ไม่มีเมาส์'' :xx
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 [sakila]> เลือกเลย (); 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
การนำเข้าคงที่ของรูปแบบ csv ที่เสียหายบางส่วนที่สร้างโดย pgcli
pgcli
เวอร์ชันใหม่ไม่ต้องการรูปแบบ CSV และไม่ต้องการตัวเลือก --pgcli-fix
pager = /usr/bin/pspg --rr=2 --quit-if-one-screen --ignore-case
เนื่องจากขณะนี้ sqlcl
ไม่รองรับตัวเลือกเพจเจอร์โดยตรง คุณสามารถใช้เครื่องมือเช่น qsh เพื่อแก้ไขปัญหานี้ หรือใช้สคริปต์ pspg.sql จาก repo นี้
หากต้องการใช้สคริปต์ ให้เริ่ม 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 ลองใช้โหมด xterm mouse 1002 เมื่อเทอร์มินัลและ ncurses ไม่ได้โบราณเกินไป หากมีปัญหาในการใช้งาน - สิ่งมองเห็นที่ไม่ต้องการเมื่อคุณขยับเมาส์เมื่อกดปุ่มเมาส์บางปุ่ม 1. โปรดรายงานปัญหา (โปรดแนบไฟล์บันทึก) 2. ใช้ตัวเลือก --no-xterm-mouse-mode
และ pspg
จะไม่พยายามเปิดใช้งานโหมดนี้
บน Fedora ของฉัน เทอร์มินัลนี้แสดงธีมสีจริงไม่ถูกต้อง ปัญหาพื้นฐานอยู่ในการตั้งค่าเริ่มต้นของ TERM
นั่นคือ xterm-256color
น่าเสียดายที่เทอร์มินัล konsole
ไม่สามารถทำงานร่วมกับ xterm
ได้อย่างสมบูรณ์ และไม่อนุญาตให้เปลี่ยนสี คุณสามารถบังคับสีโดยตรงได้โดยใช้ตัวเลือก --direct-color
หรือโดยการตั้งค่า TERM=xterm-direct
ตัวเลือกที่สองคือการตั้งค่าตัวแปร TERM
ให้เป็น konsole-256color
ที่ถูกต้องมากขึ้น ในกรณีนี้ pspg
จะจับคู่สี RGB จริงกับสีที่รองรับ 256 สี
ปัญหาตัวเชื่อมโยงบางอย่างสามารถแก้ไขได้โดย:
ฉันเปลี่ยนไป gcc -lncursesw เพจเจอร์.c -o pspg -ggdb ถึง gcc เพจเจอร์.c -o pspg -ggdb -lncursesw
หากคุณต้องการใช้ pspg
เป็นไคลเอ็นต์ Postgres คุณต้องเรียกใช้ configure --with-postgresql=yes
บน Fedora ที่มี Postgres build ของตัวเอง ฉันต้องติดตั้งแพ็คเกจ openssl-devel
และฉันต้องตั้งค่า export PKG_CONFIG_PATH="/usr/local/pgsql/master/lib/pkgconfig/"
บน FreeBsd คุณควรใช้ gmake
แทน make
.
เมื่อคุณคอมไพล์โค้ดจากซอร์ส ให้รัน ./configure ก่อน บางครั้ง ./autogen.sh ก่อน
หากคุณต้องการแสดงอักขระ UTF-8 ดังนั้น pspg
ควรเชื่อมโยงกับไลบรารี ncursesw
อักขระ UTF-8 จะแสดงไม่ดีเมื่อมีการใช้ไลบรารี ncursesw
คุณสามารถเห็นอักขระที่เสียหายด้วยการตั้งค่าภาษาที่ไม่ถูกต้องเช่นกัน
คุณสามารถตรวจสอบการรองรับตัวอักษรแบบกว้างได้ pspg --version
คาดว่าจะมี ncurses with wide char support
รัน configure
อีกครั้งด้วยตัวเลือก --with-ncursesw
เมื่อคำสั่งนี้ล้มเหลว ให้ตรวจสอบว่ามีการติดตั้งแพ็คเกจการพัฒนาสำหรับไลบรารี ncursesw หรือไม่
# brew install pspg
คุณสามารถคอมไพล์ pspg
ได้อย่างง่ายดายโดยไม่ต้อง brew
แต่คุณต้องมีไลบรารี gnu readline
MacOS จะใช้ readline จำลองบน libedit เป็นค่าเริ่มต้น แต่ 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 User Repository มีสองเวอร์ชัน:
master
ใช้ตัวช่วย AUR ที่คุณเลือกหรือ git และ makepkg
เพื่อติดตั้ง pspg
# pkg install pspg
# pkg_add pspg
เพิ่มเติมเกี่ยวกับเรื่องนี้
# port install pspg
pspg
สามารถใช้ได้กับ MS Windows โดยใช้ wsl2 ฉันทดสอบแล้วและใช้งานได้โดยไม่มีปัญหา
ในเทอร์มินัลรัน 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 ได้ (ฉันไม่ได้ทดสอบ) อีกทางเลือกหนึ่งคือใช้เพจเจอร์ less
ซึ่งพอร์ตไปยังสภาพแวดล้อม MS Win บางส่วน 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
กับตัวอักษรเน้นเสียงตามปกติได้ แต่ไม่ควรใช้เส้นขอบ Unicode การแทนที่เส้นขอบ ascii ด้วยตัวอักษรเส้นขอบพิเศษ (โดยเทคโนโลยี ncurses) ทำงานได้ดี - ดูที่ Options|Force unicode borders
ตัวเลือก
Solaris make
ไม่รองรับคำสั่งแบบมีเงื่อนไข - ควรลบออก ดังนั้น ให้ลบฟังก์ชันที่ไม่รองรับออกจาก Makefile
( ifdef
, endif
) แทนที่ -include
ด้วย include
ก่อน
หลังจากรัน configure
ลบลิงค์บนไลบรารี termcap
จาก config.make
มันเป็นขยะที่ผลิตโดยสคริปต์ automake readline
การใช้งานร่วมกับไลบรารี 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 - การใช้งานแถบเมนู CUA และเมนูแบบเลื่อนลงสำหรับ ncurses https://github.com/okbob/ncurses-st-menu
หากคุณชอบ โปรดส่งโปสการ์ดจากประเทศบ้านเกิดของคุณไปยังที่อยู่ของฉัน โปรด:
Pavel Stehule
Skalice 12
256 01 Benesov u Prahy
Czech Republic
ฉันขอเชิญคำถาม ความคิดเห็น รายงานข้อผิดพลาด โปรแกรมแก้ไขบนที่อยู่อีเมล [email protected]