كل من يستخدم 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 الكثير من الأوامر الرئيسية مع برنامج Less Pager أو محرر VI.
يمكن أيضًا تمرير الخيارات ضمن متغير بيئة PSPG
. تتم معالجة ملف التكوين أولاً. تتم معالجة الخيارات من متغير PSPG
بعد ذلك، وتتم معالجة خيارات سطر الأوامر في النهاية. يمكن معالجة خيار واحد عدة مرات، وتفوز القيمة الأخيرة.
اسم | الاستخدام |
---|---|
PSPG | يمكن أن تعقد نفس الخيارات مثل سطر الأوامر |
PSPG_CONF | المسار إلى ملف التكوين |
PSPG_HISTORY | المسار إلى ملف سجل قراءة الخط الخاص بـ 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 | فوكس برو مثل |
3 | القائمة مثل |
4 | موضوع أبيض |
5 | المغفل مثل |
6 | PCFand مثل |
7 | موضوع أخضر |
8 | الموضوع الأزرق |
9 | كلمة مثالية مثل |
10 | مظهر أزرق منخفض التباين |
11 | وضع سماوي غامق/أسود |
12 | مفارقة مثل |
13 | dBase IV النمط الرجعي |
14 | النمط القديم dBase IV (ملصقات أرجوانية) |
15 | موضوع أحمر أبيض |
16 | موضوع بسيط |
17 | موضوع مظلم مشمس |
18 | موضوع الضوء المشمس |
19 | موضوع ضوء Gruvbox |
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
Cyan
LightGray
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 ، ك | التنقل إلى الخلف بمقدار سطر واحد |
KEY_DOWN ، ي | التنقل للأمام بسطر واحد |
KEY_LEFT ، ح | قم بالتمرير إلى اليسار |
KEY_RIGHT ، ل | قم بالتمرير إلى اليمين |
السيطرة + KEY_LEFT | قم بالتمرير حرفًا واحدًا إلى اليسار |
السيطرة + KEY_RIGHT | قم بالتمرير حرفًا واحدًا إلى اليمين |
التحول + KEY_LEFT | قم بالتمرير إلى اليسار بعمود واحد |
التحول + KEY_RIGHT | قم بالتمرير عمودًا واحدًا إلى اليمين |
السيطرة + الصفحة الرئيسية ، ز | انتقل إلى بداية الملف |
السيطرة + النهاية ، ج | انتقل إلى نهاية الملف |
البديل + ل | انتقل إلى رقم السطر |
ح | انتقل إلى السطر الأول من النافذة الحالية |
م | انتقل إلى نصف النافذة الحالية |
ل | انتقل إلى نهاية النافذة الحالية |
بيج ، Ctrl + ب | إلى الوراء نافذة واحدة |
نبيدج ، Ctrl + f ، مسافة | إلى الأمام نافذة واحدة |
الصفحة الرئيسية ، ^ | انتقل إلى بداية السطر، العمود الأول |
انتهى ، $ | انتقل إلى نهاية السطر، العمود الأخير |
السيطرة + ه | قم بتمرير النافذة لأسفل |
السيطرة + ص | قم بتمرير النافذة لأعلى |
السيطرة + د | إلى الأمام نصف نافذة |
السيطرة + ش | إلى الوراء نصف نافذة |
ق | حفظ المحتوى إلى ملف |
/ | ابحث عن النمط الذي سيأخذك إلى الحدث التالي |
؟ | ابحث عن النمط الذي سيأخذك إلى الحدث السابق |
ن | للمباراة القادمة |
ن | للمباراة القادمة في الاتجاه المعاكس |
ج | بحث العمود |
البديل + / | ابحث عن نمط داخل المنطقة المحددة |
البديل + ؟ | البحث إلى الوراء عن نمط داخل المنطقة المحددة |
البديل + ج | تبديل (تشغيل، إيقاف) مؤشر خط الرسم |
البديل + م | تشغيل (تشغيل، إيقاف) معالج الماوس الخاص |
البديل + ن | تبديل (تشغيل، إيقاف) أرقام خطوط الرسم |
Alt + v ، انقر مرتين على رأس العمود | تبديل (تشغيل، إيقاف) مؤشر عمود الرسم |
عجلة زر الماوس | انتقل عموديا |
Alt + عجلة زر الماوس | انتقل أفقيا |
F9 | عرض القائمة |
ف ، F10 ، خروج 0 | يترك |
البديل + س | قم بإنهاء وطباعة المحتوى الخام (غير المنسق). |
Alt + k ، Alt + النقر المزدوج | تبديل الإشارة المرجعية |
البديل + ي | انتقل إلى الإشارة المرجعية التالية |
البديل + ط | انتقل إلى الإشارة المرجعية السابقة |
البديل + س | تدفق الإشارات المرجعية |
أ | فرز تصاعدي |
د | فرز السليل |
ش | غير مصنف (مرتبة حسب الترتيب الأصلي) |
فضاء | توقف/استمر في وضع المراقبة |
ر | إعادة رسم الشاشة وتحديث ملف الإدخال |
الإضافية | تصدير الصف أو العمود أو الخلية إلى الهدف الافتراضي |
إزاحة + المؤشر... | تحديد النطاق |
F3 | بداية/نهاية صفوف التحديد |
التحول + F3 | بداية/نهاية كتلة التحديد |
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 ، والمفتاح بدلاً من ذلك مزيج من 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
ترجمة رمز Unicode '∅' إلى NULL في كل مرة. إذا كنت لا تستخدم إعدادًا خاصًا بواسطة pset null ...
، فسيعرض psql
سلسلة فارغة بدلاً من NULL. ليس لدى pspg
أي اكتشاف خاص (في إجراءات التصدير) لهذه الحالة. يجب عليك التحقق من عنصر القائمة وتمكينه أو تعطيله. Empty string is NULL
.
يحتوي pspg
على اكتشاف تلقائي لتطبيق الحافظة. ولسوء الحظ، لا ينبغي أن يعمل هذا الكشف في نفس الحالات. يمكنك تحديد التطبيق عن طريق تحديد الرقم (1،2،3،4) لخيار --clipboard-app
.
التنسيقات تصنع الفارق! ينسخ pspg السجلات بتنسيق CSV افتراضيًا، والذي يستخدم فواصل الفاصلة ويقطع المسافات البيضاء الأولية واللاحقة . استخدم "نص منسق" لنسخ مخرجات الاستعلام تمامًا، أو اختر أحد الخيارات الأخرى المتاحة.
V: [d/d d..d]
- المؤشر الرأسي: (رقم العمود)/(الأعمدة) (مواضع char من) .. (مواضع char إلى)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 regex/.csv عرض=pspg -f %f --csv
mc
pspg
على Cygwin، تم الإبلاغ عن بعض التجميد المؤقت للتمرير. في هذه الحالة، من فضلك، استخدم خيار --no-sleep
. أرى تمريرًا بطيئًا (عبر شريط التمرير) داخل وحدة التحكم (محطة KDE). الخيار --no-sleep
يساعد أيضًا. يمكن تحديث نتيجة الاستعلام كل n ثانية. يتذكر pspg
صف المؤشر، والمؤشر العمودي المحتمل، والترتيب المحتمل. يجب إيقاف التحديث مؤقتًا بالضغط على مفتاح المسافة . يؤدي الضغط المتكرر على هذا المفتاح إلى تمكين التحديث مرة أخرى.
يستخدم pspg
inotify API عندما يكون متاحًا، وعندما يتغير ملف الإدخال، يقوم pspg
بإعادة قراءة الملف على الفور. يمكن تعطيل هذا السلوك عن طريق الخيار --no-watch-file
أو عن طريق تحديد وقت المشاهدة عن طريق الخيار --watch
.
يمكن pspg
قراءة دفق مستمر من البيانات الجدولية من الأنبوب أو الأنبوب المسمى أو من ملف (مع خيار --stream
أو يمكنه قراءة دفق من الاستعلامات من الأنبوب أو من ملف (مع خيار --querystream
). في وضع الدفق، يمكن معالجة البيانات الموجودة في تنسيق الجدول فقط، لأن pspg
يستخدم سطرًا فارغًا كفاصل بين الجداول.
وضع دفق الاستعلام عبارة عن سلسلة من عبارات SQL مفصولة بـ char GS (فاصل المجموعة - 0x1D على سطر منفصل.
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 خط يونيكود pضبط الحدود 2 pset فارغة ∅ إلغاء ضبط الهدوء
بعض التكوينات الممكنة:
- تبديل أجهزة الاستدعاء باستخدام الأوامر:x و:xx set x '\setenv PAGER أقل' set xx '\setenv PAGER 'pspg -bX --no-mouse'' :xx
يجب أن يكون LC_CTYPE
صحيحًا. بشكل أساسي عند استخدام حدود Unicode. لا يعرض ncurses حدود Unicode (التي يتم إنتاجها بواسطة 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 من هذا الريبو.
لاستخدام البرنامج النصي، ابدأ تشغيل 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 1002، عندما لا تكون الوحدة الطرفية وncurses قديمة جدًا. إذا كانت هناك مشاكل في الاستخدام - مؤثرات بصرية غير مرغوب فيها عند التحرك بالماوس عند الضغط على بعض أزرار الماوس، فعندئذ 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 لونًا مدعومًا.
يمكن إصلاح بعض مشكلات الرابط عن طريق:
لقد تغيرت دول مجلس التعاون الخليجي -lncursesw pager.c -o pspg -ggdb ل gcc pager.c -o pspg -ggdb -lncursesw
إذا كنت تريد استخدام pspg
كعميل Postgres، فأنت بحاجة إلى تشغيل configure --with-postgresql=yes
. في Fedora مع إصدار Postgres الخاص، اضطررت إلى تثبيت حزمة 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 بشكل افتراضي خط القراءة الذي تمت محاكاته عبر libedit، لكن pspg
يتطلب مكتبة قراءة خط القراءة الكاملة لـ gnu.
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
. استخدم مساعد 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 بايت - حدود Unicode، .. يجب عرض أحرف unicode بسعة 2 بايت بشكل جيد.
يمكنك استخدام pspg
مع الأحرف المميزة المعتادة، ولكن لا ينبغي استخدام حدود Unicode. يعمل استبدال حدود ascii بأحرف ذات حدود خاصة (بواسطة تقنية ncurses) بشكل جيد - ابحث عن خيار Options|Force unicode borders
.
لا يدعم Solaris make
العبارات الشرطية - يجب إزالتها لذا، قم بإزالة الوظائف غير المدعومة من Makefile
( ifdef
, endif
) واستبدل -include
include
أولاً.
بعد تشغيل configure
إزالة الرابط على مكتبة termcap
من config.make
. إنها قمامة تم إنتاجها بواسطة برنامج 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 - تنفيذ شريط قوائم CUA والقائمة المنسدلة لـ ncurses https://github.com/okbob/ncurses-st-menu
إذا أعجبتك، أرسل بطاقة بريدية من بلدك إلى عنواني، من فضلك:
Pavel Stehule
Skalice 12
256 01 Benesov u Prahy
Czech Republic
أدعوكم إلى طرح أي أسئلة أو تعليقات أو تقارير الأخطاء أو التصحيحات على عنوان البريد [email protected]