ทุกคนที่ใช้ psql ก็ใช้เพจเจอร์ less เช่นกัน ซึ่งแม้ว่าจะทำงานได้ดี แต่ก็ไม่มีการสนับสนุนพิเศษสำหรับข้อมูลแบบตาราง ฉันพบบางโครงการ แต่ไม่มีโครงการใดที่ดีพอสำหรับจุดประสงค์นี้ ดังนั้นฉันจึงตัดสินใจเขียนเพจเจอร์พิเศษขนาดเล็กเพื่อใช้เป็นเพจเจอร์ psql
เพจเจอร์นี้สามารถใช้ได้จากไคลเอ็นต์บรรทัดคำสั่งต่อไปนี้ด้วย:
mysqlsqlitepgclimonetdbTrino (formerly Presto SQL)usqlsqlcl (สำหรับออราเคิล)nushellmcview หรือ 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]