web-dev-qa-db-fra.com

Autre format de sortie pour psql

J'utilise PostgreSQL 8.4 sur Ubuntu. J'ai une table avec des colonnes c1 à cN. Les colonnes sont suffisamment larges pour que la sélection de toutes les colonnes entraîne l'enroulement multiple d'une ligne de résultats de requête. Par conséquent, la sortie est difficile à lire.

Lorsque les résultats de la requête ne représentent que quelques lignes, il serait pratique que je puisse afficher les résultats de la requête de telle sorte que chaque colonne de chaque ligne figure sur une ligne distincte, par ex.

 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.

J'exécute ces requêtes sur un serveur sur lequel je préférerais ne pas installer de logiciel supplémentaire. Y at-il un paramètre psql qui me permettra de faire quelque chose comme ça?

273
user100464

Je devais juste passer plus de temps à regarder la documentation. Cette commande:

\x on

fera exactement ce que je voulais. Voici un exemple de sortie:

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             | 
468
user100464

(Nouveau) Mode automatique étendu:\x auto

Nouveau pour Postgresql 9.2; PSQL adapte automatiquement les enregistrements à la largeur de l'écran. auparavant, vous n'aviez que le mode étendu activé ou désactivé et vous deviez changer de mode si nécessaire.

  • Si l'enregistrement peut s'insérer dans la largeur de l'écran; psql utilise un formatage normal.
  • Si l’enregistrement peut ne pas s’adapter à la largeur de l’écran; psql utilise le mode développé.

Pour obtenir cette utilisation: \x auto

Documentation Postgresql 9.5 sur la commande PSQL.


Écran large, formatage 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)

Écran étroit, formatage étendu:

-[ 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

Comment démarrer psql avec\x auto?

Configurez la commande \x auto au démarrage en l'ajoutant à .psqlrc dans votre dossier personnel et en redémarrant psql. Pour plus d'informations, consultez la section "Fichiers" de la documentation psql .

~/.psqlrc

\x auto
238
not a patch

Vous avez tellement de choix, comment pourriez-vous être confus :-)? Les contrôles principaux sont:

# \pset format
# \H
# \x
# \pset pager off

Chacun a des options et des interactions avec les autres. Les options les plus automatiques sont:

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

L'option "\ x auto" plus récente bascule sur l'affichage ligne à ligne uniquement "si nécessaire".

-[ 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

L'ancien "\ pset format wrapped" est similaire en ce sens qu'il tente d'ajuster parfaitement les données à l'écran, mais retombe à non aligné si les en-têtes ne correspondent pas. Voici un exemple de wrapped:

 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
60
Bryce

Une chose intéressante est que nous pouvons voir les tables horizontalement, sans plier. nous pouvons utiliser la variable d'environnement PAGER. psql s'en sert. vous pouvez définir

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

ou simplement less -S si son est déjà disponible en ligne de commande, sinon avec le bon emplacement. -S pour afficher les lignes non pliées. vous pouvez y transférer n'importe quel afficheur personnalisé ou d'autres options.

J'ai écrit plus dans Affichage horizontal Psql

13
Dineshkumar

pspg est un outil simple qui offre un formatage de tableau avancé, un défilement horizontal, une recherche et bien d’autres fonctionnalités.

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

assurez-vous ensuite de mettre à jour la variable PAGER, par exemple. dans votre ~/.bashrc

export PAGER="pspg -s 6" 

-s représente le jeu de couleurs (1-14). Si vous utilisez référentiels pgdg installez simplement un paquet (sur une distribution du type Debian):

Sudo apt install pspg

pspg example

10
Tombart

Assurez-vous également de vérifier\H, qui active/désactive la sortie HTML. Pas nécessairement facile à lire sur la console, mais intéressant pour la sauvegarde dans un fichier (voir\o) ou le collage dans une fenêtre de l'éditeur/navigateur pour l'affichage, en particulier avec plusieurs lignes de données relativement complexes.

7
Wexxor

vous pouvez utiliser le zenity pour afficher le résultat de la requête sous forme de tableau html.

  • commencez par implémenter le script bash avec le code suivant:

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

    enregistrez-le comme mypager.sh

  • Exportez ensuite la variable d’environnement PAGER en définissant le chemin complet du script en tant que valeur.

    par exemple: - export PAGER = '/ path/mypager.sh'

  • Puis connectez-vous au programme psql puis exécutez la commande \ H

  • Et enfin, exécutez n’importe quelle requête, le résultat affiché s’affiche dans le format zenity sous forme de tableau html.

1