Todos los que usan psql
también usan el buscapersonas less
. El cual, si bien funciona bien, no tiene soporte especial para datos tabulares. Encontré algunos proyectos, pero ninguno era lo suficientemente bueno para este propósito. Por eso decidí escribir un pequeño buscapersonas especializado para usarlo como buscapersonas psql
.
Este buscapersonas también se puede utilizar desde los siguientes clientes de línea de comandos:
mysql
sqlite
pgcli
monetdb
Trino (formerly Presto SQL)
usql
sqlcl
(para oráculo)nushell
mcview
o FoxPro
, http://okbob.blogspot.com/2019/12/pspg-themes-what-you-use-it.html El pspg
se puede instalar simplemente desde los repositorios de Debian (Ubuntu). Los repositorios de RedHat (Fedora) también contienen pspg
:
# Debian (Ubuntu)
sudo apt-get install pspg
# RedHat (Fedora)
sudo dnf install pspg
La configuración básica es muy simple: simplemente configure la variable de entorno del sistema PSQL_PAGER
:
export PSQL_PAGER='pspg -X -b'
La instalación nativa en MS Windows no es compatible, pero pspg
funciona bien dentro de wsl2
. Dentro del entorno wsl2, la instalación es la misma que en el sistema Linux usado.
La instalación en macOS/homebrew es sencilla con 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 comparte muchos comandos clave con el buscapersonas less o el editor vi.
Las opciones también se pueden pasar dentro de la variable de entorno PSPG
. El archivo de configuración se procesa primero. Las opciones de la variable PSPG
se procesan después del paso y las opciones de la línea de comando se procesan al final. Una opción se puede procesar varias veces, gana el último valor.
Nombre | Uso |
---|---|
PSPG | puede contener las mismas opciones que la línea de comando |
PSPG_CONF | ruta al archivo de configuración |
PSPG_HISTORY | ruta al archivo del historial de lectura de pspg |
Los nombres de los campos pueden ser diferentes a los de las opciones de línea de comando relacionadas:
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
Código | Nombre |
---|---|
0 | blanco y negro |
1 | Comandante de medianoche como |
2 | Me gusta FoxPro |
3 | Pdmenú como |
4 | tema blanco |
5 | Perro callejero como |
6 | PCF y me gusta |
7 | tema verde |
8 | tema azul |
9 | Palabra perfecta como |
10 | Tema azul de bajo contraste |
11 | Modo cian oscuro/negro |
12 | Paradoja como |
13 | estilo retro dBase IV |
14 | Estilo retro dBase IV (etiquetas magenta) |
15 | Tema rojo blanco |
16 | tema sencillo |
17 | Tema oscuro solarizado |
18 | Tema de luz solarizada. |
19 | Tema ligero de Gruvbox |
20 | Tema de luz tao |
21 | Tema FlatWhite |
22 | Tema de tuberías relacionales |
23 | Tema de color de papel |
ver http://okbob.blogspot.cz/2017/07/i-hope-so-every-who-uses-psql-uses-less.html
El tema se puede personalizar sobre plantillas base y de menú que hacen referencia a los temas integrados. El archivo del tema personalizado debe guardarse en el directorio con la configuración pspg
. El nombre de este archivo debe ser .pspg_theme_xxx. El tema personalizado se puede seleccionar mediante la opción de línea de comando --custom-style=name
o mediante el comando ctheme name
.
Ejemplo de un archivo de tema personalizado (llamado .pspg_theme_mc2
(se puede activar con el comando 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
Algunas teclas pueden estar marcadas con el símbolo *
. Las claves marcadas se utilizan para registros impares.
data* = black, lightgray
label* = black, lightgray, italic, bold
border* = #000000, lightgray
template
y template_menu
establecen valores alternativos para cualquier clave no especificada en el tema personalizado. template_menu
en particular es actualmente la única forma de personalizar la apariencia del menú F9.
llave | personaliza |
---|---|
background | Color de fondo |
data | Texto de datos (sin encabezado o columna congelada) |
border | Color del borde |
label | Texto de etiqueta (encabezado o columna congelada) |
row_number | Números de línea |
record_number | |
selected_area | |
footer | Pie de página de resultados (no tabular, por ejemplo, recuento de filas) |
cursor_data | Texto de datos resaltados (sin encabezado o columna congelada) |
cursor_border | Color de borde resaltado |
cursor_label | Texto de etiqueta resaltada (encabezado o columna congelada) |
cursor_row_number | Números de línea resaltados |
cursor_record_number | |
cursor_selected_area | |
cursor_footer | Pie de página de resultados resaltados (no tabular, por ejemplo, recuento de filas) |
scrollbar_arrows | Barra de desplazamiento con flechas hacia arriba y hacia abajo |
scrollbar_background | Fondo "vacío" de la barra de desplazamiento |
scrollbar_slider | Control deslizante de la barra de desplazamiento sobre el fondo |
scrollbar_active_slider | Control deslizante de la barra de desplazamiento capturado con el mouse |
title | Título de resultados (en psql describe comandos) |
status_bar | Consulta principal y información de ubicación del cursor |
prompt_bar | |
info_bar | Texto informativo (por ejemplo, "No encontrado" durante la búsqueda) |
input_bar | Mensaje de entrada y texto (por ejemplo, búsqueda) |
error_bar | |
bookmark | |
bookmark_border | |
cursor_bookmark | |
cross_cursor | Celda resaltada en la intersección de los cursores horizontal y vertical |
cross_cursor_border | Bordes en la intersección de cursores horizontales y verticales. |
matched_pattern | El resultado de la búsqueda coincide con el texto |
matched_pattern_nohl | |
matched_line | Línea que contiene el resultado de la búsqueda |
matched_line_border | Bordes en la línea de resultados de búsqueda |
matched_pattern_cursor | Texto coincidente del resultado de búsqueda resaltado |
matched_line_vertical_cursor | Texto coincidente del resultado de búsqueda resaltado verticalmente |
matched_line_vertical_cursor_border | Bordes de celda resaltada verticalmente con coincidencia de resultados de búsqueda |
error |
Los colores ANSI Black
, Red
, Green
, Brown
, Blue
, Magenta
, Cyan
, LightGray
, Gray
, BrightRed
, Verde BrightGreen
, Amarillo, Yellow
BrightBlue
, BrightMagenta
, BrightCyan
, White
y Default
se mostrarán a medida que el emulador de terminal los configure. Alternativamente, puede especificar valores RGB hexadecimales #FF00FF
.
Los estilos son cualquier combinación de: bold
, italic
, underline
, reverse
, standout
, dim
.
Si el formato de alguna clave no es correcto, esta fila se ignora. Para depurar un tema personalizado, es bueno iniciar pspg
con la opción --log
. La información sobre las definiciones rotas se almacena en el archivo de registro.
Llaves) | Dominio |
---|---|
0 , 1 , 2 , 3 , .., 9 | congelar las primeras N columnas |
KEY_UP , k | navegar hacia atrás una línea |
KEY_DOWN , j | navegar hacia adelante por una línea |
TECLA_IZQUIERDA , h | desplazarse hacia la izquierda |
LLAVE_DERECHA , l | desplazarse hacia la derecha |
Ctrl + TECLA_IZQUIERDA | desplazarse un carácter hacia la izquierda |
Ctrl + TECLA_DERECHA | desplazarse un carácter hacia la derecha |
Mayús + KEY_LEFT | desplazarse una columna hacia la izquierda |
Mayús + KEY_RIGHT | desplazarse una columna hacia la derecha |
Ctrl + Inicio , g | ir al inicio del archivo |
Ctrl + Fin , G | ir al final del archivo |
Alt + l | ir al número de línea |
h | ir a la primera línea de la ventana actual |
METRO | ir a la mitad de la ventana actual |
l | ir al final de la ventana actual |
PAGINA , Ctrl + b | una ventana hacia atrás |
NPAGE , Ctrl + f , espacio | adelantar una ventana |
INICIO , ^ | ir al comienzo de la línea, primera columna |
FINAL , $ | ir al final de la línea, última columna |
Ctrl + mi | desplazar una ventana hacia abajo |
Ctrl + y | desplazar una ventana hacia arriba |
Ctrl + d | adelantar media ventana |
Ctrl + u | hacia atrás media ventana |
s | guardar contenido en un archivo |
/ | buscar un patrón que le llevará a la siguiente ocurrencia |
? | buscar un patrón que le llevará a la ocurrencia anterior |
norte | para el próximo partido |
norte | para el próximo partido en dirección inversa |
do | búsqueda de columnas |
Alt + / | buscar un patrón dentro del área seleccionada |
Alt + ? | búsqueda hacia atrás de un patrón dentro del área seleccionada |
Alt + c | activar (activar, desactivar) el cursor de línea de dibujo |
Alt + m | activar (activar, desactivar) el propio controlador del ratón |
Alt + norte | activar (activar, desactivar) dibujar números de línea |
Alt + v , doble clic en el encabezado de la columna | activar (activar, desactivar) el cursor de la columna de dibujo |
Rueda del botón del ratón. | desplazamiento vertical |
Alt + Rueda del botón del mouse | desplazamiento horizontal |
F9 | mostrar menú |
q , F10 , Esc 0 | abandonar |
Alt + q | salir e imprimir contenido sin formato (sin formato) |
Alt + k , Alt + doble clic | cambiar marcador |
Alt + j | ir al siguiente marcador |
Alt + yo | ir al marcador anterior |
Alt + o | marcadores al ras |
a | ordenar ascendente |
d | ordenar descendiente |
tu | sin clasificar (ordenado en orden de origen) |
Espacio | detener/continuar en modo reloj |
R | Volver a pintar la pantalla y actualizar el archivo de entrada |
Ins | exportar fila, columna o celda al destino predeterminado |
mayúsculas + cursor... | definir rango |
F3 | inicio/fin de filas de selección |
Mayús + F3 | inicio/fin del bloque de selección |
Ctrl + arrastrar ratón | define la selección de filas, en el encabezado de la columna define la selección de columnas |
Ctrl + o | mostrar la pantalla principal, presione cualquier tecla para volver al buscapersonas nuevamente |
% , Ctrl + a | seleccionar todo |
Dominio | Descripción |
---|---|
N | ir al número de línea |
+N | ir a N líneas adelante |
-N | ir a N líneas hacia atrás |
N+ | ir al número de línea |
N- | ir al número de línea desde el final |
theme N | establecer número de tema |
copy [all|selected] [nullstr "str"] [csv|tsv|insert|text|pipesep|sqlvalues] | copiar datos al portapapeles |
save [all|selected] [nullstr "str"] [csv|tsv|insert|text|pipesep|sqlvalues] | copiar datos al portapapeles |
order [N|column name] | ordenar por columna |
orderd [N|column name] | desc ordenar por columna |
sort [N|column name] | ordenar por columna |
sortd [N|column name] | desc ordenar por columna |
dsort [N|column name] | desc ordenar por columna (alias) |
rsort [N|column name] | desc ordenar por columna (alias) |
asc [N|column name] | ordenar por columna (alias) |
desc [N|column name] | desc ordenar por columna (alias) |
search [back] [selected] [column name] [string|"string"] | cadena de búsqueda en datos |
La salida se puede redirigir a cualquier comando cuando el nombre comienza con el símbolo de barra vertical:
copy csv | less
El buscapersonas se puede finalizar presionando las teclas q o F10 o Esc 0 . Con la opción --on-sigint-exit
el buscapersonas se cierra presionando las teclas Ctrl + c o Esc Esc .
pspg admite la posibilidad de utilizar una secuencia de teclas Esc , tecla en lugar de una combinación de tecla Alt +. El intervalo entre presionar Esc y la tecla está limitado por el intervalo especificado por la opción esc-delay
o por la opción de configuración esc_delay
. Este es el tiempo de retardo máximo en ms. Después de este intervalo, una sola pulsación de Esc se interpreta como Escape
. -1 significa ilimitado, 0 desactiva esta función.
La búsqueda de columnas no distingue entre mayúsculas y minúsculas en todo momento. La columna buscada está marcada por un cursor vertical. El último patrón de búsqueda de cadena no vacía se utiliza cuando el patrón de búsqueda actual es una cadena vacía. La búsqueda comienza después de la columna vertical visible o en las primeras columnas visibles no congeladas (después de un desplazamiento horizontal) o en la primera columna. Después de la última columna, la búsqueda comienza nuevamente desde la primera.
Para admitir el portapapeles, se debe instalar la aplicación del portapapeles: 1. wl-clipboard (Wayland), 2. xclip (xwindows), 3. pbcopy (MacOS) o 4. clip.exe (WSL2).
pspg
intenta traducir el símbolo Unicode '∅' a NULL cada vez. Si no utiliza la configuración especial de pset null ...
, entonces psql
muestra una cadena vacía en lugar de NULL. pspg
no tiene ninguna detección especial (en las rutinas de exportación) para este caso. Debe marcar y habilitar o deshabilitar el elemento del menú. Empty string is NULL
.
pspg
tiene detección automática de la aplicación del portapapeles. Desafortunadamente, esta detección no debería funcionar en los mismos casos. Puede especificar la aplicación especificando el número (1,2,3,4) en la opción --clipboard-app
.
¡Los formatos marcan la diferencia! pspg copia registros en formato CSV de forma predeterminada, que utiliza separadores de coma y recorta los espacios en blanco iniciales y finales . Utilice "texto formateado" para copiar exactamente el resultado de la consulta o elija una de las otras opciones disponibles.
V: [d/d d..d]
- cursor vertical: (número de columna)/(columnas) (posiciones de caracteres desde) .. (posiciones de caracteres hasta)FC: d
- longitud de las columnas congeladas en caracteresC: d..d/d
- datos visibles no congelados en caracteres (de .. a)/(total)L:[d + dd/d]
- líneas (número de la primera línea visible) + (número de línea de visualización), (línea actual)/(líneas)d%
- porcentaje de datos ya mostrados Funciona bien con Miller http://johnkerl.org/miller/doc/index.html
mlr --icsv --opprint --barred put '' obce.csv | pspg --force-uniborder
La nueva versión tiene soporte csv integrado; solo use la opción --csv
.
Se puede integrar en mc
/etc/mc/mc.ext
a su ~/.config/mc directory
##csv expresión regular/.csv Ver=pspg -f %f --csv
mc
pspg
en Cygwin, se informa una congelación temporal del desplazamiento. En este caso, utilice la opción --no-sleep
. Veo un desplazamiento lento (a través de la barra de desplazamiento) dentro de la consola (terminal KDE). La opción --no-sleep
también ayuda. El resultado de la consulta se puede actualizar cada n segundos. pspg
recuerda la fila del cursor, posible cursor vertical, posible orden. La actualización debe pausarse presionando la tecla espacio . Pulsar repetidamente esta tecla permite volver a actualizar.
pspg
usa la API inotify cuando está disponible y cuando se cambia el archivo de entrada, pspg
vuelve a leer el archivo inmediatamente. Este comportamiento se puede desactivar mediante la opción --no-watch-file
o mediante la especificación del tiempo de visualización mediante la opción --watch
.
pspg
puede leer un flujo continuo de datos tabulares desde una tubería, una tubería con nombre o desde un archivo (con una opción --stream
o puede leer un flujo de consultas desde una tubería o desde un archivo (con una opción --querystream
). En el modo de transmisión, sólo se pueden procesar datos en formato de tabla, porque pspg
usa una línea vacía como separador entre tablas.
El modo de flujo de consulta es una secuencia de sentencias SQL separadas por el carácter GS (separador de grupo - 0x1D en línea separada).
pavel@localhost ~]$ gato < /dev/pts/3 > ~/pipe seleccione 10 ^] seleccione 20 ^] seleccionar * de clase_pg ^]
debes agregar a tu perfil:
#para Postgres 10 y mayores exportar PAGER="pspg" #para postgres 11 y posteriores exportar PSQL_PAGER="pspg" #o "setenv PAGER pspg" a .psqlrc
y .psqlrc
set SILENCIO 1 pset estilo de línea Unicode pset borde 2 pset nulo ∅ unset TRANQUILO
alguna configuración posible:
- Cambiar buscapersonas con los comandos :x y :xx set x '\setenv PAGER menos' set xx '\setenv PAGER 'pspg -bX --no-mouse'' :xx
LC_CTYPE
debería ser correcto. Principalmente cuando usas bordes Unicode. ncurses no muestra bordes Unicode (producidos por psql
) sin la configuración correcta de esta variable. Es posible comprobar un valor 'C.UTF8'.
Cuando usas una opción --only-for-tables
, entonces
PAGER
en pspg
y PSQL_PAGER
en less
oPAGER
en less
y PSQL_PAGER
en pspg
MariaDB [sakila]> buscapersonas pspg -s 14 -X --force-uniborder --quit-if-one-screen PAGER configurado en 'pspg -s 14 -X --force-uniborder --quit-if-one-screen' MariaDB [sakila]> seleccionar ahora(); MariaDB [sakila]> seleccione * de nicer_but_slower_film_list límite 100;
El cliente nativo SQLite no produce una salida bien formateada, pero se le puede forzar a generar formato CSV, y este formato es bien legible para pspg
sqlite3 -csv -header testdb.db 'select * from foo2' | pspg --csv --csv-header=on --double-header
pgcli necesita las siguientes opciones de configuración ( ~/.config/pgcli/config
):
pager = /usr/bin/pspg --csv --rr=2 --quit-if-one-screen --ignore-case --csv-header on --pgcli-fix
table_format = csv
La versión anterior de pgcli tenía una salida muy lenta en formato tabular. Una solución alternativa fue utilizar el formato csv. Esto no debería ser necesario en las versiones actuales cuando se solucionó el problema de rendimiento. Una opción --pgcli-fix
solucionó la importación del formato csv parcialmente roto generado por pgcli
. La versión moderna de pgcli
no necesita formato csv y no necesita la opción --pgcli-fix
.
pager = /usr/bin/pspg --rr=2 --quit-if-one-screen --ignore-case
Como sqlcl
actualmente no admite una opción de buscapersonas directamente, puede usar una herramienta como qsh para solucionar este problema o usar el script pspg.sql de este repositorio.
Para usar el script, inicie sqlcl
como se muestra a continuación (es importante pasar los detalles de su tty actual):
$ TTY=$(tty) sqlcl system/system @/path/to/pspg.sql
Ahora puede enviar los resultados de una consulta a pspg
de esta manera:
SQL> pspg select * from user_tables;
El pspg
soporta por defecto table_mode
: rounded
y table_mode
: heavy
.
También se puede utilizar la conversión a csv.
sys | get cpu | to csv | pspg --csv
Nota: footer_mode
debe estar deshabilitado
configuración de shell nulo:
$env.config.footer_mode = never
$env.config.table.header_on_separator = false
$env.config.ls.clickable_links = false
$env.config.table.mode = rounded
pspg intenta usar el modo de mouse xterm 1002, cuando terminal y ncurses no sean demasiado antiguos. Si hay problemas con el uso: artefactos visuales no deseados cuando se mueve con el mouse cuando se presiona algún botón del mouse, entonces 1. informe el problema (adjunte el archivo de registro), 2. use una opción --no-xterm-mouse-mode
y pspg
no intentarán activar este modo.
En mi Fedora, este terminal no muestra correctamente los temas de colores reales. El problema básico está en la configuración TERM
predeterminada, es decir, xterm-256color
. Desafortunadamente, el terminal konsole
no es totalmente compatible con xterm
y no permite el cambio de color. Puede forzar colores directos usando la opción --direct-color
o configurando TERM=xterm-direct
. La segunda opción es una configuración más correcta de la variable TERM
en konsole-256color
. En este caso, pspg
asignará los colores rgb verdaderos a los 256 colores admitidos.
Algunos problemas del vinculador se pueden solucionar mediante:
yo cambié gcc -lncursesw buscapersonas.c -o pspg -ggdb a gcc buscapersonas.c -o pspg -ggdb -lncursesw
Si desea utilizar pspg
como cliente Postgres, debe ejecutar configure --with-postgresql=yes
. En Fedora con compilación propia de Postgres, tuve que instalar el paquete openssl-devel
y tuve que configurar export PKG_CONFIG_PATH="/usr/local/pgsql/master/lib/pkgconfig/"
.
En FreeBsd deberías usar gmake
en lugar de make
.
Cuando compile el código fuente, ejecute ./configure primero. A veces ./autogen.sh primero
Si desea mostrar caracteres UTF-8, entonces pspg
debe vincularse con la biblioteca ncursesw
. Los caracteres UTF-8 se muestran mal cuando se utiliza la biblioteca ncursesw
. También puedes ver caracteres rotos con una configuración regional incorrecta.
Puede comprobar la compatibilidad con caracteres amplios mediante pspg --version
. Se esperan filas ncurses with wide char support
. Vuelva a ejecutar configure
con la opción --with-ncursesw
. Cuando este comando falla, verifique si el paquete de desarrollo para la biblioteca ncursesw está instalado.
# brew install pspg
Puedes compilar fácilmente pspg
sin brew
, pero necesitas la biblioteca gnu readline
. MacOS usa por defecto readline emulado sobre libedit, pero pspg
requiere la biblioteca gnu readline completa.
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
El pspg está disponible en el repositorio de la comunidad https://yum.postgresql.org/packages.php
# apk add pspg
# emerge -av dev-db/pspg
El repositorio de usuarios de Arch contiene dos versiones:
master
. Utilice el ayudante AUR de su elección o git y makepkg
para instalar pspg.
# pkg install pspg
# pkg_add pspg
Más sobre esto
# port install pspg
pspg
se puede usar simplemente en MS Windows usando wsl2. Lo probé y funciona sin problemas.
En la terminal ejecute wsl --install -d Ubuntu-22.04
En la terminal abra la sesión de 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
no hay ninguna diferencia con la instalación y el trabajo en Ubuntu (Debian)
pspg
aún no está portado a MS Windows. Existe la dependencia de ncurses y de la función newterm
implementada correctamente (completamente) ( pdcurses
hace esto solo en plataformas Unix). Quizás pueda funcionar con WSL2 (no lo probé). Una alternativa puede ser utilizar less
buscapersonas, que se adapta a algunos entornos de MS Win. Depende less
de termcap
y es un poco más portátil que pspg
( termcal
es una capa baja de ncurses). less
admite filas fijas y con la opción --chop-long-lines
o simplemente -S
se puede usar como buscapersonas para pspg
.
export PSQL_PAGER="less --chop-long-lines --header 1"
Hay algunos problemas que requieren cambios manuales en el código para una compilación exitosa: probamos pspg
con éxito, pero aunque pspg
estaba vinculado con las bibliotecas ncursesw, el soporte de codificación utf8 no funcionó completamente correctamente, probablemente debido a algunos problemas en la biblioteca libc
. Hay problemas con los caracteres codificados en 3 bytes: bordes Unicode. Los caracteres Unicode de dos bytes deben mostrarse bien.
Puede utilizar pspg
con los caracteres acentuados habituales, pero no se deben utilizar bordes Unicode. Reemplazar bordes ascii por caracteres de bordes especiales (mediante tecnología ncurses) funciona bien; mira la opción Options|Force unicode borders
.
Solaris make
no admite declaraciones condicionales; debe eliminarse. Por lo tanto, elimine la funcionalidad no compatible de Makefile
( ifdef
, endif
), reemplace -include
por include
primero.
Después de ejecutar configure
elimine el enlace en la biblioteca termcap
de config.make
. Es basura producida por el script readline
automake. La combinación con las bibliotecas ncurses
genera algunos problemas de vinculación.
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
Almacene datos en algún formato de columna (ahora los datos se almacenan como una matriz de filas). Con este cambio, es posible operar sobre columnas: ocultar columnas, cambiar el ancho, iterar cíclicamente sobre columnas, cambiar el orden de las columnas, marcar columnas y exportar solo las columnas seleccionadas (filas seleccionadas).
Reemplace la impresión del documento directamente en la ventana de ncurses por alguna estructura más inteligente. Internamente hay muchas comprobaciones y correcciones para admitir un diseño dinámico complejo. Las posibles vistas deben recordar la primera fila, la última fila y la fila actual. Ahora, estos datos están en variables globales o en estructuras DataDesc y ScrDesc.
Este proyecto utiliza la biblioteca st_menu: implementación de la barra de menú CUA y el menú desplegable para ncurses https://github.com/okbob/ncurses-st-menu
Si te gusta envía una postal desde tu país de origen a mi dirección, por favor:
Pavel Stehule
Skalice 12
256 01 Benesov u Prahy
Czech Republic
Invito a cualquier pregunta, comentario, informe de errores, parches en la dirección de correo [email protected]