tutorial number example comandos postgresql output-formatting psql

postgresql - number - Formato de salida alternativo para psql



psql example (7)

Estoy usando PostgreSQL 8.4 en Ubuntu. Tengo una tabla con las columnas c1 a cN . Las columnas son lo suficientemente anchas para que al seleccionar todas las columnas, una fila de resultados de la consulta se ajuste varias veces. En consecuencia, la salida es difícil de leer.

Cuando los resultados de la consulta constituyen solo unas pocas filas, sería conveniente si pudiera ver los resultados de la consulta de manera que cada columna de cada fila esté en una línea separada, por ejemplo

c1: <value of row 1''s c1> c2: <value of row 1''s c1> ... cN: <value of row 1''s cN> ---- some kind of delimiter ---- c1: <value of row 2''s c1> etc.

Estoy ejecutando estas consultas en un servidor donde preferiría no instalar ningún software adicional. ¿Hay un ajuste de psql que me permita hacer algo así?


(Nuevo) Modo automático expandido: / x auto

Nuevo para Postgresql 9.2; PSQL ajusta automáticamente los registros al ancho de la pantalla. anteriormente, solo tenía el modo expandido activado o desactivado y tenía que cambiar entre los modos según fuera necesario.

  • Si el registro puede caber en el ancho de la pantalla; psql utiliza el formato normal.
  • Si el registro no puede encajar en el ancho de la pantalla; psql utiliza el modo expandido.

Para obtener este uso: / x auto

Postgresql 9.5 Documentación en el comando PSQL.

Pantalla ancha, formato normal:

id | time | humanize_time | value ----+-------+---------------------------------+------- 1 | 09:30 | Early Morning - (9.30 am) | 570 2 | 11:30 | Late Morning - (11.30 am) | 690 3 | 13:30 | Early Afternoon - (1.30pm) | 810 4 | 15:30 | Late Afternoon - (3.30 pm) | 930 (4 rows)

Pantalla estrecha, formato expandido:

-[ RECORD 1 ]-+--------------------------- id | 1 time | 09:30 humanize_time | Early Morning - (9.30 am) value | 570 -[ RECORD 2 ]-+--------------------------- id | 2 time | 11:30 humanize_time | Late Morning - (11.30 am) value | 690 -[ RECORD 3 ]-+--------------------------- id | 3 time | 13:30 humanize_time | Early Afternoon - (1.30pm) value | 810 -[ RECORD 4 ]-+--------------------------- id | 4 time | 15:30 humanize_time | Late Afternoon - (3.30 pm) value | 930

¿Cómo iniciar psql con / x auto?

Configure /x auto command en el inicio agregándolo a .psqlrc en su carpeta de inicio y reiniciando psql. Consulte la sección ''Archivos'' en el documento psql para obtener más información .

~ / .psqlrc

/x auto


Solo necesitaba pasar más tiempo mirando la documentación. Este comando:

/x on

haré exactamente lo que yo quería. Aquí hay algunos resultados de muestra:

select * from dda where u_id=24 and dda_is_deleted=''f''; -[ RECORD 1 ]------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- dda_id | 1121 u_id | 24 ab_id | 10304 dda_type | CHECKING dda_status | PENDING_VERIFICATION dda_is_deleted | f dda_verify_op_id | 44938 version | 2 created | 2012-03-06 21:37:50.585845 modified | 2012-03-06 21:37:50.593425 c_id | dda_nickname | dda_account_name | cu_id | 1 abd_id |


También asegúrese de revisar / H, que activa / desactiva la salida HTML. No es necesariamente fácil de leer en la consola, pero es interesante para verter en un archivo (ver / o) o pegar en una ventana del editor / navegador para ver, especialmente con múltiples filas de datos relativamente complejos.


Tiene tantas opciones, ¿cómo podría estar confundido :-)? Los controles principales son:

# /pset format # /H # /x # /pset pager off

Cada uno tiene opciones e interacciones con los demás. Las opciones más automáticas son:

# /x off;/pset format wrapped # /x auto

La nueva opción "/ x auto" cambia a la visualización línea por línea solo "si es necesario".

-[ RECORD 1 ]--------------- id | 6 description | This is a gallery of oilve oil brands. authority | I love olive oil, and wanted to create a place for reviews and comments on various types. -[ RECORD 2 ]--------------- id | 19 description | XXX Test A authority | Testing

El antiguo "/ pset format wrap" es similar, ya que trata de encajar perfectamente los datos en la pantalla, pero no se alinea si los encabezados no encajan. Aquí hay un ejemplo de envuelto:

id | description | authority ----+--------------------------------+--------------------------------- 6 | This is a gallery of oilve | I love olive oil, and wanted to ; oil brands. ; create a place for reviews and ; ; comments on various types. 19 | Test Test A | Testing


Una cosa interesante es que podemos ver las mesas horizontalmente, sin plegarlas. Podemos usar la variable de entorno PAGER . psql hace uso de él. puedes establecer

export PAGER=''/usr/bin/less -S''

o simplemente less -S si ya está disponible en la línea de comandos, si no con la ubicación correcta. -S para ver las líneas desplegadas. puede pasar en cualquier visor personalizado u otras opciones con él.

He escrito más en Psql Horizontal Display.


puede utilizar el zenity para mostrar el resultado de la consulta como tabla html.

  • Primero implementa el script bash con el siguiente código:

    cat> ''/tmp/sql.op''; zenity --text-info --html --filename = ''/ tmp / sql.op'';

    Guárdalo como mypager.sh

  • Luego, exporte la variable de entorno PAGER estableciendo la ruta completa del script como valor.

    por ejemplo: - exportar PAGER = ''/ path / mypager.sh''

  • Luego inicie sesión en el programa psql y luego ejecute el comando / H

  • Y, finalmente, ejecutar cualquier consulta, la salida presentada se mostrará en el zenity en formato de tabla html.


pspg es una herramienta simple que ofrece formato avanzado de tablas, desplazamiento horizontal, búsqueda y muchas más características.

git clone https://github.com/okbob/pspg.git cd pspg ./configure make make install

luego asegúrese de actualizar la variable PAGER , por ejemplo, en su ~/.bashrc

export PAGER="pspg -s 6"

donde -s representa la combinación de colores ( 1-14 ). Si está utilizando repositorios pgdg, simplemente instale un paquete (en una distribución similar a Debian):

sudo apt install pspg